码迷,mamicode.com
首页 > 其他好文 > 详细

trait优先级 与 使用

时间:2018-09-02 15:30:35      阅读:509      评论:0      收藏:0      [点我收藏+]

标签:UNC   ext   扩展   extends   repo   cti   hello   实现   func   

    之前一直沒有讲到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优先级 与 使用

标签:UNC   ext   扩展   extends   repo   cti   hello   实现   func   

原文地址:https://www.cnblogs.com/cxscode/p/9573918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!