PHP特征冲突(特质参数)

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP特征冲突(特质参数)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有三个特点.

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

脚本宝典总结

以上是脚本宝典为你收集整理的PHP特征冲突(特质参数)全部内容,希望文章能够帮你解决PHP特征冲突(特质参数)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。