On Wed, Dec 30, 2020, at 6:27 AM, Rowan Tommins wrote: > On 28/12/2020 20:21, Larry Garfield wrote: > > After considerable discussion and effort, Ilija and I are ready to offer > > you round 2 on enumerations. > > > Thank you both, again, for all your efforts. I'm pleased to say that I > like this draft even more than the last one. :) > > A couple of points that occurred to me reading through: > > - The magic methods section lists __call as allowed, but not > __callStatic; was this deliberate, or just an oversight?
More oversight; the reasons for not including it initially aren't really good reasons, so we'll unblock that. > - Under Future Scope, the "Grouped Syntax" sub-section says "That would > only work on the simple, non-primitive-backed case with no methods > defined [...] it is unclear how common that will be in practice" This > caveat doesn't apply to the current proposed syntax, and should perhaps > be re-visited. > > Given that this is currently a legal declaration: > > class Suit { > const Hearts = 'H', Diamonds = 'D', Clubs = 'C', Spades = 'S'; > } > > It seems fairly reasonable for the enum version to allow the same syntax: > > enum Suit: string { > case Hearts = 'H', Diamonds = 'D', Clubs = 'C', Spades = 'S'; > } > > Or, for a non-scalar enum: > > enum Suit { > case Hearts, Diamonds, Clubs, Spades; > } That's partially left over from when we had per-case methods, where grouping would be highly fugly. However, I'm still advocating for tagged unions (in a future step) having per-case methods, and that would make the grouping syntax fugly again. It's trivial to add later, so for now I think it's best to skip. If we find later on it doesn't get in the way of anything it's an easy addition. --Larry Garfield -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php