Re: [RFC] [VOTE] Constants in traits

From: Date: Wed, 06 Jul 2022 09:45:50 +0000
Subject: Re: [RFC] [VOTE] Constants in traits
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-118204@lists.php.net to get a copy of this message
Hey Shinji, On Tue, 5 Jul 2022 at 23:39, shinji igarashi <sji@sj-i.dev> wrote: > Hello internals, > > I've started the vote for the Constants in Traits RFC: > https://wiki.php.net/rfc/constants_in_traits > > The vote will end on 19. July 2022. > I voted "NO" on this. Reasoning: * traits are pretty much unnecessary in the language. Since their introduction in PHP 5.4 their usage went from "let's try this out" to "how do I burn this with fire?". I don't want traits to expand in scope: they already do enough damage with their built-in accidental complexity. * invariants shared by trait (example in the RFC) are generally to be separated to clear invariant objects/functions/static methods, instead of being put in a trait * a trait does not know the public API of its implementor either, so self::SOME_CONSTANT inside a trait points nowhere sensible, since there is no clear contract on the possible implementations. Referencing symbols of the implementing class in a trait is a clear mistake (again, an example from the RFC) * this expands trait compatibility checks, introducing a number of potential error scenarios that are unnecessary (due to the already mind-boggling over-complicated use TRAIT1, TRAIT2, TRAIT3 semantics) In practice, while this may make on surface because you can declare constants everywhere, declaring more stuff on traits is problematic. From a technical and detail PoV, your RFC is well written and implemented: it just solves a problem that doesn't/shouldn't need solving. Greets, Marco Pivetta https://twitter.com/Ocramius https://ocramius.github.io/

« previous php.internals (#118204) next »