Comments (7)
Additional plus: Static analyzers will understand that tryFrom()
doesn't throw an exception while has() ? from() : null
would require additional logic to understand.
from enum-comparison.
As discussed in slack, my primary concern with from()/tryFrom() is that we'd be stealth-introducing a naming convention of "tryX() means it may return null". I am highly wary of that without further consideration because the implications could be large.
(Not necessarily bad, but large.)
from enum-comparison.
There's also the option of getOrDefault(string $name, $default = null)
, but both would definitely be different naming conventions. I don't have a strong preference.
Additional plus: Static analyzers will understand that
tryFrom()
doesn't throw an exception whilehas() ? from() : null
would require additional logic to understand.
I agree it's definitely easier.
They'd have to get it from an external repo such as https://github.com/JetBrains/phpstorm-stubs/blob/master/Reflection/ReflectionClass.php (or extract it) because getDocComment() is almost always null for internal classes, methods, etc.
- in comparison, https://www.php.net/manual/en/reflectionclass.getproperty.php does not reference ReflectionException anywhere
Phan and Psalm check for user-defined methods but not for internal methods (at least not that I remember for psalm)
from enum-comparison.
I'd feel more comfortable with from(): self
/ tryFrom(): ?self
if voters were clear of the implications. Unless someone objects I'm going to start a thread on Internals tomorrow to highlight it and see if anyone has an issue with setting this precedent. If there's no serious pushback, then we can go with that.
from enum-comparison.
The downside of fromOrDefault
is that with missing generics the return type would have to be mixed
. My preference is tryFrom
. I'm also cool with fromOrNull
.
from enum-comparison.
RFC updated to use from
/tryFrom
.
from enum-comparison.
Leaving open until @iluuu1994 updates the implementation. Ilija, please close when you've done so.
from enum-comparison.
Related Issues (20)
- value or value() or getValue()? HOT 4
- Tests for __CLASS__ and __FUNCTION__
- Namespace tests
- Constant expressions for primitive values? HOT 3
- Rename ScalarEnum to Raw- or ValueEnum? HOT 8
- Prevent offsetGet on enums in const expr HOT 14
- Clarify types of operations that are allowed in expressions in RFC document/implementation HOT 1
- Fast method to get only the name of a case? HOT 4
- Is the name ReflectionEnumCase(implementation) or ReflectionCase(RFC document) HOT 3
- ReflectionEnumConst for ADT compatibility HOT 3
- from/has scalar in reflection HOT 5
- Handle failure in from HOT 7
- Override getDeclaringClass() to return ReflectionEnum instead of getEnum() HOT 5
- UnitEnum definition HOT 6
- Inherited ReflectionEnum methods HOT 1
- Custom print_r output HOT 7
- I created an online WebAssembly demo for enums HOT 2
- Improve issue message for array unpacking of Traversable enum HOT 1
- Some feedback on Reddit HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from enum-comparison.