On Mon, Dec 28, 2020 at 9:22 PM Larry Garfield <la...@garfieldtech.com> wrote:
> Hello, Internalians! > > After considerable discussion and effort, Ilija and I are ready to offer > you round 2 on enumerations. This is in the spirit of the previous > discussion, but based on that discussion a great deal has been reworked. > The main change is that Enumeration Cases are now object instances of the > Enumeration class rather than their own class. Most of the other changes > are knock-on effects of that. > > Of particular note: > > * Cases may not have methods or constants on them. They're just dumb > values. > * Enums themselves may have methods, static methods, or constants. > * Traits are supported, as long as they don't have properties. > * The value() method on scalar enums is now a property. > > The full RFC is here, and I recommend reading it again in full given how > much was updated. > > https://wiki.php.net/rfc/enumerations > > The implementation is 98% complete; there's still a few lagging bits in > reflection, and some opcache bugs that Ilija is still stomping on. > > There are a few outstanding questions listed that we would like feedback > on. We're not entirely certain which direction to go with them, for > reasons explained in the RFC. Input on those is especially welcome. > > Happy New Year. May it be enumerable. > I think the reflection part is the weakest of this proposal, in my opinion there should not be a ReflectionEnum and ReflectionCase. - ReflectionEnum extends ReflectionClass is problematic - is hasEnum just an alias for hasConstant? - Same for getCases() for getConstants(). - what does getConstant() or ReflectionClassConstant::getValue return for a non scalar enum? the instance? In my opinion you should embrace the "desugarizing" like constructor promotion and just keep everything with the exsiting Reflection structure. > > -- > Larry Garfield > la...@garfieldtech.com > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: https://www.php.net/unsub.php > >