Php,traits 中的链式调用碰撞(魔法)方法,如何?

Php, chain-calling collision (magic) methods in traits, how to?

trait A
{
    function __get($name)
    {
    }
}

trait B
{
    function __get($name)
    {
    }
}

trait C
{
    function __get($name)
    {
    }
}

class D
{
    use A, B, C;

    function __get($name)
    {
        // it may also have magic method
    }
}

我想调用所有 4 个 __get() 方法,可以吗?我看到我可以重命名方法,但它更像是从 A、B、C 中选择一个方法,但我需要所有方法

不重命名导入的 __get 方法是不可能的。

请参阅有关此事的 PHP 文档:PHP: Traits - Conflict Resolution

class D
{
    use A, B, C {
        A::__get as private __getA;
        B::__get as private __getB;
        C::__get as private __getC;
    }

    function __get($name)
    {
        $this->__getA($name);
        $this->__getB($name);
        $this->__getC($name);
    }
}

(我已将 class 重命名为 D,因为您不能在同一个命名空间中拥有同名的特征和 class。)