加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读