结论:
同样的方法名,当前类的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();