> On Sep 18, 2022, at 7:51 AM, Mohammad Amin Chitgarha <machitgar...@gmail.com> 
> wrote:
> 
> Hi.
> 
> Currently, it's possible that, inside a trait's function, use the parent 
> method of a class using the trait. This way, not only it's implicitly 
> supposed the trait is used in a class having a parent, but also the parent 
> class has such a method. It doesn't seem to be a good practice, as stated in 
> the answers of this question 
> (https://softwareengineering.stackexchange.com/questions/371067/should-a-trait-refer-to-parent-methods).
> Also, it's almost impossible to override a parent method (using the same 
> signature) using a trait. This is useful if you have to inherit multiple 
> classes from a base class, but also override one (or more) of the base 
> methods with a common functionality provided by a trait.
> There are some workarounds to these problems (specially talking about the 
> later one), but they have their own disadvantages:
> Define a trait function with the same signature but a different name and use 
> it. The main disadvantage is that it's a different method, and is not 
> polymorphic.
> Do (1), include the trait in the derived class(es), then override the parent 
> method in all derived classes and manually call the trait function. Not 
> perfect because you have to copy the same code for all derived classes.
> 
> Stick with parent:: in the trait function. Implicit and not good (e.g. static 
> analyzers and IDEs cannot help).
> 
> Change the parent class to use traits. This is not always possible, as it 
> might be someone else's code.

How often have you (or anyone else?) found a need to inherit someone else's 
class and then need to override one of their methods via a trait? A need that 
you felt you could not easily work around in some other reasonable way?

If yes, could you please give some examples?

-Mike

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to