php – 与其他特征方法的冲突

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 与其他特征方法的冲突脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
如何用同名方法处理特征?
trait FooTraIT {
  public function fooMethod() {
        return 'foo method';
  }

  public function getRow() {
        return 'foo row';
  }
}

trait TooTrait {
    public function tooMethod() {
        return 'too method';
    }

    public function getRow() {
        return 'too row';
    }
}

class Boo
{
    use FooTrait;
    use TooTrait;

    public function booMethod() {
        return $this->fooMethod();
    }
}

错误,

我该怎么办?

而且,使用两个相同的方法名称,如何从trait FooTrait获取方法

$a = new Boo;
var_dump($a->getRow()); // Fatal error: Call to undefined method Boo::getRow() in...

编辑:

class Boo
{
    use FooTrait,TooTrait {
        FooTrait::getRow insteadof TooTrait;
    }

    public function booMethod() {
        return $this->fooMethod();
    }
}

如果我想通过Boo从TooTrait获取getRow的方法呢?可能吗?

PHP关于冲突的文档:
<?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;
     } }

所以在你的情况下可能是

class Boo
{
    use FooTrait,TooTrait {
        FooTrait::getRow insteadof TooTrait;
    }

    public function booMethod() {
        return $this->fooMethod();
    }
}

(即使你单独使用也可以工作,但我认为更清楚)

或者使用as来声明一个别名.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 与其他特征方法的冲突全部内容,希望文章能够帮你解决php – 与其他特征方法的冲突所遇到的问题。

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

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