1
我想使用此模式在我的代码中启用依赖注入。 我觉得它与动态语言的play-doh本质保持一致[1]。PHP嵌套静态变量访问依赖注入
class A {
static $FOO = 'Foo';
function __construct() {
$this->foo = self::$FOO::getInstance();
}
}
A::$FOO = 'MockFoo';
$a = new A();
不幸的是,这并不工作,我得到:
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in [test.php] on line 6
我可以创建一个临时变量来欺骗解析器,但有另一种方式?
function __construct() {
$FOO = self::$FOO;
$this->foo = $FOO::getInstance();
}
[1] http://weblog.jamisbuck.org/2008/11/9/legos-play-doh-and-programming
也许这个工程:'$ this-> foo = {self :: $ FOO} :: getInstance();',但我不知道。不过,我不知道这应该是什么样的依赖注入?注入全局状态?会有点多余。 – hakre
所以在这种情况下,我正在使用传统的类似rails的框架,它使用了大量普遍使用的静态类。所以假设我必须调用Foo :: getInstance(),并且我不能彻底替换整个应用程序/测试套件中的Foo(并且我不能更改构造器参数)是否有另一种方法来注入一个实例富? –
$ this-> foo = {self :: $ FOO} :: getInstance()导致“语法错误,意外”{“”这是php 5.3.2 –