使用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内有没有相同的方法,毕竟这个也属于类内的方法,查找完了类内都没有该方法,再找父类的,祖父类的.............