【发布时间】:2013-06-21 10:19:10
【问题描述】:
我想通过我的 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
}
}
所以我的问题是:
- TUseContainer::__construct($c);会起作用吗?
- 如果没有,是否 parent::__construct($c);会成功吗? (我认为不会)
- 是 trait::myOverridedMethod();调用非静态覆盖方法的好方法?
- 您认为我应该使用“as”关键字吗? (我认为这是个坏主意)
- “TUseContainer”对我打算做的事情来说是个好名字吗?
欢迎大家发表意见,谢谢。
我会做一些测试并发布结果。
【问题讨论】:
-
我有:致命错误:无法静态调用非静态方法 TUseContainer::__construct(),假设 $this 来自第 12 行 /path/to/MyClass.php 中的不兼容上下文
-
谢谢罗伯特,但它并不完全相同,因为 __construct 是继承和覆盖的。优先级改变规则。