“PHP特性”;三角形“;附属国
我们的项目中有一个小的伪代码场景:“PHP特性”;三角形“;附属国,php,traits,Php,Traits,我们的项目中有一个小的伪代码场景: trait headFunction { protected function doStuffWithParam($param){ return $param; } } trait extA { use headFunction; protected function doExtAStuff($param){ ... return $this->doStuffWithPar
trait headFunction {
protected function doStuffWithParam($param){
return $param;
}
}
trait extA {
use headFunction;
protected function doExtAStuff($param){
...
return $this->doStuffWithParam($param);
}
}
trait extB {
use headFunction;
protected function doExtBStuff($param){
...
return $this->doStuffWithParam($param);
}
}
class classUsingTraits(){
use extA, extB;
...
}
但有冲突:
尚未应用特征方法doStuffWithParam,因为在测试中与其他特征方法存在冲突
不幸的是,traits没有扩展选项
如何避免碰撞问题,而不使用traits将头部功能移动到类别-有什么解决方法吗?我们查看了PHP文档,但是soloution只针对2个特性-我们有这样的特性,大约10+-。。我们不能使用它
有没有办法解决这个问题
谢谢你的帮助 PHP在这段代码中遇到的问题是,当从extA而不是extB调用doStuff时,您可能会做一些不同的事情。如果总是做同样的事情,你可以使用
使用extA,extB{extA::doStuffWithParam而不是extB;}
解决类中的冲突,但是当你想使用3个或更多的trait时呢?同样的想法,这表明trait可能不是解决你的情况的理想方法。这也是大多数编程语言不提供多重继承的原因。traits的要点是:它是复制粘贴解决方案,仅此而已(仅由解释器完成)。作为“复制粘贴范例”,您必须确保不会发生冲突。