Re: [RFC] Enumerations, Round 2
| From: | Bob Weinand | Date: | Mon, 01 Feb 2021 15:20:58 +0000 |
| Subject: | Re: [RFC] Enumerations, Round 2 | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-113037@lists.php.net to get a copy of this message | ||
> Am 29.01.2021 um 18:15 schrieb Larry Garfield <larry@garfieldtech.com>:
>
> And we're back again. The RFC has been updated with a steady stream of smaller
> improvements based on feedback and testing, and is now in its Final Form(tm) (we think). The only
> major change worth noting is that we renamed things. :-)
>
> An enum with no scalar backing is now called a Pure Enum, made up of Pure Cases. One that does
> have backing values is called a Backed Enum, made up of Backed Cases. That change is mainly to
> allow for future expansion to non-scalar backing static values, should the use case arise.
> Reflection was also reworked a bit to make it more logical.
>
> https://wiki.php.net/rfc/enumerations
> <https://wiki.php.net/rfc/enumerations>
>
> At this point, Ilija and I consider the RFC done and ready for a vote. Baring any major issues
> being brought up, we plan to start the vote in the first half of next week, probably Tuesday-ish.
> If you have any other bug reports or tweaks, please speak now or forever hold your patches.
Hey,
There is a single point in the RFC which is unreasonable to me, which is barring static properties.
I do not consider static properties to be handled the same than normal properties. It's
perfectly reasonable to prevent normal instance properties if we want [pure] enums to be stateless
(which makes sense).
It however does not make sense to arbitrarily restrict static properties. In the end a static
property (on final classes at least) is mostly a nice way to express global state, which could be
written "global $my_namespaced_enum_class_prop_name;" and used then. It's just that
self::$prop_name is much more readable and user-friendly, including for types and static analysis.
I also agree with Nikitas note that IterableEnum is really a suboptimal name. If you want to
highlight finiteness, maybe call it FiniteEnum. UnitEnum would be fine too.
Thanks,
Bob
> --Larry Garfield
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: https://www.php.net/unsub.php
> <https://www.php.net/unsub.php>