trait 方法冲突的解决方法

1、使用 insteadof 操作符来明确指定使用冲突方法中的哪一个 2、as 操作符可以 为某个方法引入别名

<?php


trait A
{
    public function smallTalk()
    {
        echo 'a';
    }

    public function bigTalk()
    {
        echo 'A';
    }
}

trait B
{
    public function smallTalk()
    {
        echo 'b';
    }

    public function bigTalk()
    {
        echo 'B';
    }
}


class Aliased_Talker
{
    use A, B {
        B::smallTalk insteadof A;  //使用B的smallTalk方法
        A::bigTalk insteadof B; //使用A的bigTalk方法
        B::bigTalk as talk; // talk 来作为 B 的 bigTalk 的别名
    }

}

(new Aliased_Talker())->smallTalk(); //b
(new Aliased_Talker())->bigTalk();  //A
(new  Aliased_Talker())->talk();    //B


zed
请先登录后发表评论
  • latest comments
  • 总共0条评论