[RFC] Enumerations, Round 2
| From: | Larry Garfield | Date: | Mon, 28 Dec 2020 20:21:53 +0000 |
| Subject: | [RFC] Enumerations, Round 2 | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-112626@lists.php.net to get a copy of this message | ||
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.
--
Larry Garfield
larry@garfieldtech.com