学科分类
目录
PHP基础

Trait同名

当两个Trait中含有同名的成员(属性或方法)时,可以进行替代或设置别名来完成调用。具体使用方法如下所示。

 1  trait t1
 2  {
 3    public function eat()
 4    {
 5      echo 't1,eat';
 6    }
 7  }
 8  trait t2
 9  {
 10   public function eat()
 11   {
 12     echo 't2,eat';
 13   }
 14 }
 15 class Person
 16 {
 17   use t1,t2 {
 18     t1::eat insteadof t2;
 19     t2::eat as show;
 20   }
 21 }
 22 $person = new Person();
 23 $person->eat();   // 输出结果:t1,eat
 24 $person->show();  // 输出结果:t2,eat

上述代码中,定义了两个Trait,分别为t1和t2。在Person类中引入Trait,由于两个Trait中有相同的方法,因此使用insteadof关键字将左边指定的Trait成员替代右侧中的Trait,as关键字用于为左侧的成员设置成右侧的别名。因此,当调用eat()方法时,实际执行t1中的eat()方法,调用show()方法时,实际执行T2中的eat()方法。

点击此处
隐藏目录