> On 28 Jun 2020, at 19:33, Nikita Popov <nikita....@gmail.com> wrote: > > On Sat, Jun 27, 2020 at 3:53 PM Stephen Reay <php-li...@koalephant.com > <mailto:php-li...@koalephant.com>> > wrote: > >> Hi, >> >> It’s always struck me as slightly odd that traits don’t support constants >> the way classes and interfaces do. >> I tried to find an explanation of the lack of support in the original RFC, >> and came up empty. >> >> A consequent discussion in R11 has led me here. >> Can anyone working on internals explain why traits don’t allow constants >> (either technically or philosophically)? >> Moreover, what’s the opinion(s) of the list, on adding support for this? >> Would an RFC be needed? >> > > Sounds like a reasonable addition. An RFC will be needed to specify the > details, which tend to be tricky whenever traits are involved. Some > suggestions: > > * Constants mustn't be accessible directly on the trait, i.e. > TraitName::FOOBAR throws. self::FOOBAR within the trait is legal in that > "self" is remapped to the using class, as usual. > * The same constants important from multiple traits should follow the > rules of properties, i.e. require that values match. Conflict resolution > for constants should very much *not* be supported. > > Regards, > Nikita
Hi All, I finally found some time to write something to get this started. I’m following the advice given, and putting this on GH initially, any and all comments/feedback/suggestions are welcome! https://github.com/stephenreay/php-rfcs/blob/master/trait-constants.md <https://github.com/stephenreay/php-rfcs/blob/master/trait-constants.md> Note: I realise it doesn’t lay out voting choices, target version etc: It seems more pertinent to focus on nailing down some kind of fixed target of what should be achieved, before detailing the when/etc. Cheers Stephen