Re: [RFC] Enumerations, Round 2
| From: | Rowan Tommins | Date: | Mon, 04 Jan 2021 14:05:48 +0000 |
| Subject: | Re: [RFC] Enumerations, Round 2 | ||
| References: | 1 2 3 4 5 6 7 8 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-112747@lists.php.net to get a copy of this message | ||
On 04/01/2021 11:15, Markus Fischer wrote:
On 03.01.21 12:01, Mike Schinkel wrote:I would personally be OK with this if it was allowed but opt-in, e.g. adding the ": string" would default the values in that way, or even something magic like ": auto". I'm still not a fan of having values *always* defined, because I want to be able to pick case labels without worrying about whether they make sense as values. For instance, there's a similar maintenance issue to named parameters: having a default value means if I write "case PENDING;" in v1.0, I can't change that to "case PENDING='P';" or "case PENDING=1;" in v1.1, in case somebody is relying on the value being 'PENDING', which was never intended. Regards, -- Rowan Tommins [IMSoP]So in my perfect world this: enum BookingStatus {I'm with Mikes' suggesting here, see also my previous messages [1] [2]. I don't know how to back this up with numbers, but the way I see it the majority of use cases will have a benefit of being able to directly use the literal values derived from the lexical ones and the ability to have custom values is feature next to it.case PENDING; case CONFIRMED; case CANCELLED;} Would be equivalent to: enum BookingStatus {case PENDING = "PENDING"; case CONFIRMED = "CONFIRMED"; case CANCELLED = "CANCELLED";}