PHP特征冲突(特质参数)
发布时间:2020-12-13 15:59:25 所属栏目:PHP教程 来源:网络整理
导读:我有三个特点. Trait Param,GroupId和SessionId. Traits GroupId和SessionId包括Param. 类GroupSession包括特征GroupId和SessionId ?phptrait Param{ private $params = []; public function setParams($params) { $this-params = $params; } public functio
我有三个特点.
Trait Param,GroupId和SessionId. Traits GroupId和SessionId包括Param. 类GroupSession包括特征GroupId和SessionId <?php trait Param { private $params = []; public function setParams($params) { $this->params = $params; } public function getParam($param) { return isset($this->params[$param]) ? $this->params[$param] : null; } } trait GroupId { use Param; public function getGroupId() { return $this->getParam('group.id'); } } trait SessionId { use Param; public function getSessionId() { return $this->getParam('session.id'); } } class GroupSession { use GroupId { GroupId::setParams insteadOf SessionId; GroupId::getParam insteadOf SessionId; } use SessionId; } $t = new GroupSession(); 当我尝试运行此代码时出现错误: GroupId和SessionId在GroupSession的组合中定义相同的属性($params).但是,定义不同并且被认为是不兼容的. 请告诉我,如何解决这个问题? 谢谢! 解决方法
解决方法命名冲突
trait A{ public function smallTalk(){ echo "I am form trait A and method smallTalk"; echo "<br>"; } public function bigTalk(){ echo "I am form trait A and method bigTalk"; echo "<br>"; } } trait B{ public function smallTalk(){ echo "I am form trait B and method smallTalk"; echo "<br>"; } public function bigTalk(){ echo "I am form trait B and method bigTalk"; echo "<br>"; } } class AB{ use A,B{ A::bigTalk insteadof B; B::bigTalk as gazi; B::smallTalk insteadof A; A::smallTalk as anis; } } $obj1 = new AB; $obj1->bigTalk(); $obj1->gazi(); $obj1->smallTalk(); $obj1->anis(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |