使用trait中相同方法的优先级问题
使用trait类中与本类和父类中相同的方法优先级问题,代码说明
<?php
class Base {
public function sayHello() {
echo 'Hello Father Class!';
}
}
trait SayWorld {
public function sayHello() {
// parent::sayHello();
echo 'Hello Trait Class!';
}
}
class MyHelloWorld extends Base {
use SayWorld;
public function sayHello() {
echo 'Hello My Class!';
}
}
$my = new MyHelloWorld();
$my->sayHello();
?>
代码执行结果说明:本类方法>>>trait内方法>>>父类内同方法
这也好理解,毕竟初始化的对象是属于本类的,那么执行的方法肯定优先是本类内的方法的,如果本类内没有该方法,那么看看类似于引用的trait内有没有相同的方法,毕竟这个也属于类内的方法,查找完了类内都没有该方法,再找父类的,祖父类的.............

浙公网安备 33010602011771号