PHP 解决冲突
示例
试图在一个类别中使用多个特征可能导致涉及冲突方法的问题。您需要手动解决此类冲突。
例如,让我们创建此层次结构:
trait MeowTrait {
public function say() {
print "Meow \n";
}
}
trait WoofTrait {
public function say() {
print "Woof \n";
}
}
abstract class UnMuteAnimals {
abstract function say();
}
class Dog extends UnMuteAnimals {
use WoofTrait;
}
class Cat extends UnMuteAnimals {
use MeowTrait;
}现在,让我们尝试创建以下类:
class TalkingParrot extends UnMuteAnimals {
use MeowTrait, WoofTrait;
}php解释器将返回致命错误:
致命错误:尚未应用特质方法,因为TalkingParrot与其他特征方法存在冲突
要解决此冲突,我们可以这样做:
使用关键字insteadof来使用一个特征的方法,而不是另一个特征的方法
使用类似的构造为方法创建别名 WoofTrait::sayassayAsDog;
class TalkingParrotV2 extends UnMuteAnimals {
use MeowTrait, WoofTrait {
MeowTrait::say insteadof WoofTrait;
WoofTrait::say as sayAsDog;
}
}
$talkingParrot = new TalkingParrotV2();
$talkingParrot->say();
$talkingParrot->sayAsDog();此代码将产生以下输出:
喵
汪汪
热门推荐
10 五一公司放假祝福语简短
11 追星女孩的祝福语简短
12 给长辈端午祝福语 简短
13 生日祝福语有诗意简短
14 团圆日祝福语简短
15 中秋商务祝福语简短最新
16 温暖文艺简短祝福语短句
17 男孩上学祝福语简短的
18 入住酒店文案祝福语简短