> On Jan 7, 2022, at 1:56 PM, Rowan Tommins <rowan.coll...@gmail.com> wrote: > > On 07/01/2022 13:47, Robert Korulczyk wrote: >> I'm not really sure why would you not want this - what is the point of >> marking method as interface implementation, if it is not reflected by type >> system in actual execution? > > > It's really quite simple: I don't want traits to tell me how I "must" use > them, but am quite happy for them to document how I "can" use them.
About any of these someone could say "I don't want to be told..." "...I must implement an abstract method" "...I must implement all the methods in an interface" "...I must pass all arguments declared in a function" "...I must pass arguments that are of the type that were type-hinted" "...I cannot extend a final class" "...I cannot access a private property outside the class" "...I cannot change a readonly property after it has been initialized" And yet specifying appropriate constraints for a specific use-case has its benefits. I'm sure you can see benefit to the above constraints so it is strange to me you cannot see the benefit of traits that would constrain their uses to requiring an interface. If it were possible to specify that a trait required an interface then I don't envision anyone other than those who need bespoke traits would do so, and those are not likely traits you would want to use anyway because they could be changed by the developer when their use-case evolved. #jmtcw #fwiw -Mike > > Unless we allow a trait to *automatically* implement the interface (or > similar features, such as an interface with default implementation) there is > no direct impact on the actual type system. There are, as far as I can see, > three things the feature would provide: > > - Documentation: the trait can tell me as a programmer that it contains > everything I need to implement a particular interface > - Code generation: the trait can import the list of methods from an interface > as abstract methods which it requires > - Policing: the trait can force me as a programmer to use it in a certain > way; this is the part I don't see the need for > > Regards, > > -- > Rowan Tommins > [IMSoP] > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: https://www.php.net/unsub.php >