如何重写特征中的__call的正确方法?

时间:2019-05-26 15:11:24

标签: laravel laravel-5 eloquent

我正在开发一个动态添加方法的程序包,因此我应该在laravel雄辩的模型中重写__call方法。我将其写为特征,并且可以使用,但是如果使用另一个也覆盖__call的特征的模型也抛出错误,并显示一条消息:“特质方法__call尚未应用,因为与其他特征方法发生了冲突”

我的特征码是这样的:

trait HasX
{
    public function __call($name, $arguments)
    {
        if($name== 'x') return 'x';
        return self::__call($name, $arguments);
    }

}

它工作得很好,但是如果我使用另一个特质也可以覆盖这些特质,则会抛出该错误。 例如:

trait HasY
{
    public function __call($name, $arguments)
    {
        if($name== 'y') return 'y';
        return self::__call($name, $arguments);
    }

}

什么是实现此目标的正确方法?

0 个答案:

没有答案