1. 程式人生 > >php5.4.0新特性,trait的優先順序分析

php5.4.0新特性,trait的優先順序分析

結論:
同樣的方法名,當前類的trait,比繼承過來方法,優先順序高。比當前類裡的方法優先順序低。

實踐過程如下(省略靜態方法的實踐

實踐程式碼1:

trait trait1{
    public function fun1(){
        echo 'trait1';
    }

}

class base {
    use trait1;
    public function fun1(){
        echo 'base';
    }
}

class class1 extends base {

}

$ref = new ReflectionClass('class1');
$class1 = $ref->newInstanceArgs();

//執行結果"base",說明trait方法和類方法同級的情況下,類方法優先順序更高
$class1->fun1();

實踐程式碼2:

trait trait1{
    public function fun1(){
        echo 'trait1';
    }

}

class base {
    public function fun1(){
        echo 'base';
    }
}

class class1 extends base {
    use trait1;
}

$ref = new ReflectionClass('class1');
$class1 = $ref->newInstanceArgs();

//執行結果“trait1”,結論,同樣的方法名,在同級類中,trait方法比繼承的方法優先順序更高
$class1->fun1();