On Sat, Jun 27, 2020 at 3:53 PM Stephen Reay <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

Reply via email to