trait优先级 与 使用

Posted cxscode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了trait优先级 与 使用相关的知识,希望对你有一定的参考价值。

    之前一直沒有讲到trait,在此我不得不提一下trait中的优先级:

       在trait继承中,优先顺序依次是:来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。

       For example: 

    class A{
    public function sayHello(){
    echo "A";
    }
    }
    
    trait B{
    public function sayHello(){
       parent::sayHello();
    echo "B";
    }
    }
    
    class C extends A{
    use B;
    }
    
    $c=new C();
    $c->sayHello();

   上述打印结果是:AB

 

    class A{
    public function sayHello(){
    echo "A";
    }
    }
    
    trait B{
    public function sayHello(){
       parent::sayHello();
    echo "B";
    }
    }
    
    class C extends A{
    use B;
    public function sayHello(){
    echo "C";
    }
    }
    
    $c=new C();
    $c->sayHello();

    此打印结果为:C

 

trait 一般写不适合或不方便写在父类,子类又需要重复实现或使用的方法,如Model,Repositories层,或者某横向扩展业务的公共方法

 








































以上是关于trait优先级 与 使用的主要内容,如果未能解决你的问题,请参考以下文章

php trait使用

php trait

PHP 特性之 trait

PHP 特性之 trait

php使用trait遇到的一个问题

PHP的Trait机制