具有相同名称的Php Class&Trait方法

我有这种特殊情况,我的特性有一个方法,我的类有一个方法,都有相同的名称.

我需要使用两种方法(特征和类中的方法)在该类中包含相同的方法

namespace Some\Namespace;
use Some\Other\Namespace\TestTrait;

class TestClass {

  use TestTrait;

  public function index()
  {
    // should call the method from the class $this->getId();
    // should also call the method from the trait $this->getId();
  }

  private function getId()
  {
    // some code
  }
}

并且在单独定义的特征中:

trait TestTrait
{
    private function getId ()
    {
        // does something
    }
}

请注意这不是粘贴代码,我可能有一些错别字:P

解决方法:

使用特质Conflict Resolution

namespace Some\Namespace;
use Some\Other\Namespace\TestTrait;

class TestClass {

  use TestTrait {
      getId as traitGetId;
  }

  public function index()
  {
    $this->getId();
    $this->traitGetId();
  }

  private function getId()
  {
    // some code
  }
}
上一篇:php – 在课堂上使用特征,为什么?


下一篇:Traits技术