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

时间:2016-12-16 14:22:39

标签: php traits

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

我需要使用两种方法(来自特质和类的方法)内部该类包含相同的方法

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

1 个答案:

答案 0 :(得分:5)

使用特质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
  }
}