之前一直沒有讲到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层,或者某横向扩展业务的公共方法

 

相关文章:

  • 2021-09-11
  • 2021-11-07
  • 2021-10-27
  • 2021-11-16
  • 2022-02-06
  • 2022-12-23
  • 2022-01-09
猜你喜欢
  • 2022-03-09
  • 2021-10-18
  • 2021-09-16
  • 2021-05-20
  • 2021-12-25
  • 2022-02-07
  • 2022-12-23
相关资源
相似解决方案