php5.4.0新特性,trait的優先順序分析
阿新 • • 發佈:2019-02-02
結論:
同樣的方法名,當前類的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();