Я хотел бы использовать этот шаблон, чтобы включить внедрение зависимостей в свой код. Я чувствую, что это согласуется с игровым характером динамических языков [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
$this->foo = {self::$FOO}::getInstance();
, но я не знаю. Однако мне интересно, какой должна быть инъекция зависимостей? Внедрить глобальное состояние? Будет несколько лишним. - person hakre   schedule 27.09.2011