我只是阅读有关特征以及如何在逗号分隔的相同php代码中使用多个php特征.但是,我不理解在两个特征具有相同功能的情况下用于解决冲突的replaceof关键字的概念.任何人都可以解释如何使用它来告诉引擎我愿意使用特征A的函数hello()而不是特征B的函数,因为有两个特征A和B以及函数hello( )在这两个特征中.
Sam*_*dra 14
根据Traits文档,当您在多个特征中使用相同的方法时,您可以通过使用insteadof运算符明确指导程序使用特定特征的方法.请参考下面的示例,它是从上面的链接借来的,这里,当$t->smallTalk()调用它时,它调用的是smallTalk方法,trait B而trait A这正好是在这里使用的.由于Class Talker使用特征A,B并且两个特征都有smallTalk()方法,我们明确告诉它使用特征B's smallTalk.
<?php
trait A {
public function smallTalk() {
echo 'a';
}
public function bigTalk() {
echo 'A';
}
}
trait B {
public function smallTalk() {
echo 'b';
}
public function bigTalk() {
echo 'B';
}
}
class Talker {
use A, B {
B::smallTalk insteadof A;
A::bigTalk insteadof B;
}
}
class Aliased_Talker {
use A, B {
B::smallTalk insteadof A;
A::bigTalk insteadof B;
B::bigTalk as talk;
}
}
$t = new Talker;
$t->smallTalk();
$t->bigTalk();
Run Code Online (Sandbox Code Playgroud)
BA
我希望这可以解决你的困惑.
| 归档时间: |
|
| 查看次数: |
3121 次 |
| 最近记录: |