【发布时间】:2016-03-28 19:27:47
【问题描述】:
我有两个 PHP 特征,每个特征都继承自相同的第三个特征:
trait C {
public function smallTalk() {
echo 'c';
}
}
trait A {
use C;
public function ac() {
echo 'a'.smallTalk();
}
}
trait B {
use C;
public function bc() {
echo 'b'.smallTalk();
}
}
我想在课堂上同时使用它们:
class D {
use A, B;
public function acbc() {
echo ac().bc();
}
}
但我不断收到错误
致命错误:Trait 方法 smallTalk 尚未应用,因为与 D 上的其他 trait 方法有冲突
我知道use_once 不是一个东西,但我正在寻找与require_once 或include_once 提供的相同功能,但用于特征。这个例子被简化了。我真正的 C 有很多方法,并且被超过 2 个特征继承,所以我真的不想每次使用超过 1 个这些特征时都必须重复一长串 insteadof。
【问题讨论】:
-
短版:不,手动处理冲突是使用特征的代价。
-
我怀疑你在滥用特质。我只使用特质作为最后的手段。这个答案对替代方案有很好的解释(在 C++ 中,但它们主要适用于任何 OOP 语言)stackoverflow.com/questions/406081/…
标签: php inheritance multiple-inheritance