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

posted @ 2021-08-27 12:58  dreamboycx  阅读(87)  评论(0编辑  收藏  举报