1. 程式人生 > >trait優先級 與 使用

trait優先級 與 使用

UNC 子類 方法 end 依次 class for 業務 pub

之前一直沒有講到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優先級 與 使用