调用覆盖特征方法

时间:2013-06-21 10:19:11

标签: php traits

我想使用特征用我的DIC实现我的对象:

trait TUseContainer {

    protected $c;

    public function __construct(Container $c) {
        $this->c=$c;
    }

}

class MyClass {
    use TUseContainer;

    //Optional
    public function __construct(ClassInheritedFromContainer $c){
        TUseContainer::__construct($c);
        //MyClass __construct stuff
    }

}

所以我的问题是:

  1. TUseContainer :: __ construct($ c);会工作吗?
  2. 如果没有,那么parent :: __ construct($ c);会做的伎俩? (我认为不会)
  3. 是trait :: myOverridedMethod();调用非静态覆盖方法的好方法是什么?
  4. 您认为我应该使用“as”关键字吗? (我认为这是一个坏主意)
  5. “TUseContainer”是我打算做的好名字吗?
  6. 欢迎所有的感谢,谢谢。

    我会做一些测试并发布结果。

1 个答案:

答案 0 :(得分:0)

我得到了一些简单的解决方法:

trait TUseContainer {

    protected $c;

    public function __construct(Container $c) {
        $this->setContainer($c);
    }

    protected function setContainer(Container $c){
        $this->c=$c;
    }
}

class MyClass {
    use TUseContainer;

    //Optional
    public function __construct(ClassInheritedFromContainer $c){
        $this->setContainer($c);
        //MyClass __construct stuff
    }

}
  1. 没有
  2. 没有
  3. 没有
  4. 没有
  5. 打开
  6. 仍欢迎所有作品