如何重写两个相同的特征方法?

时间:2018-08-01 09:25:38

标签: php traits

请在下面阅读我的代码

class A 
{
    public function echo($key)
    {
        if ($key === 1) return 'one';

        return 'default';
    }
}

trait X 
{
    public function echo ($key)
    {
        if ($key === 2) return 'two';

        return parent::echo($key);
    }
}

trait Y
{
    public function echo ($key)
    {
        if ($key === 3) return 'three';

        return parent::echo($key);
    }
}

class B extends A
{
    use X, Y {
        X::echo as echoX;
        Y::echo as echoY;   
    }

    public function echo ($key)
    {
        if ($this->echoX($key) !== parent::echo($key)) {
            return $this->echoX($key);
        }

        return $this->echoY($key);
    }
}

$object = new B();

echo $object->echo(2);

查看类B中的方法echo
有什么可以简化这种行为的吗?

注意: 目前只有2个具有相同方法的特征, 如果有10个具有相同方法的特征,是否必须使用9次?

谢谢

0 个答案:

没有答案