PHP:使用同名方法处理特征

我搜索了这个网站和谷歌,我最终创建了这个帐户...
我需要一些关于php,特性和类的帮助。 我有这2种不同的特征,有一些同名的方法。

问题依赖于我需要他们两个! 我不能使用...

这里有一个示例代码:http://sandbox.onlinephpfunctions.com/code/b69f8e73cccd2dfd16f9d24c5d8502b21083c1a3

trait traitA {
    protected $myvar;
    public function myfunc($a) { $this->myvar = $a; }
}

trait traitB
{
    public function myfunc($a) { $this->myvar = $a * $a; }
}


class myclass 
{
    protected $othervar;

    use traitA, traitB {
        traitA::myfunc as protected t1_myfunc;
        traitB::myfunc as protected t2_myfunc;
    }

    public function func($a) {
        $this->myvar = $a * 10;
        $this->othervar = t2_myfunc($a);
    }

    public function get() { 
        echo "myvar: " . $this->myvar . " - othervar: " . $this->othervar; 
    }
}

$o = new myclass;
$o->func(2);
$o->get();

所以,这个例子结束于一个明显的例子

致命错误:特征方法myfunc尚未应用,因为与myclass上的其他特征方法存在冲突

如何在不改变这些方法名称的情况下解决这个问题? 可能吗?

在附注中,这是我见过的最糟糕的编辑器!


你仍然需要解决冲突,以支持一种特质。 在这里,你只给这个名字加上别名。 这不是重命名,而是别名。

添加到use块:

traitA::myfunc insteadof traitB;

(或traitB::myfunc insteadof traitA;

它应该工作。

你现在有两个别名,并且冲突也解决了。

链接地址: http://www.djcxy.com/p/69369.html

上一篇: PHP: dealing with traits with methods of same name

下一篇: Why am I getting a division by zero error here?