用于依赖注入的PHP嵌套静态变量访问

时间:2011-09-27 17:21:52

标签: php dependency-injection static-variables

我想使用此模式在我的代码中启用依赖项注入。 我觉得它与动态语言的播放性质保持一致[1]。

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

2 个答案:

答案 0 :(得分:1)

没有其他语法可以实现此目的。你需要一个临时变量来欺骗解析器。

答案 1 :(得分:0)

尝试

$class = self::$FOO;
$this->foo = $class::getInstance();