0

我想使用特征来用我的 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”是我打算做的一个好名字吗?

欢迎大家提出意见,谢谢。

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

4

1 回答 1

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. 打开

仍然欢迎所有意见

于 2013-06-21T11:01:56.320 回答