PHP вложенный доступ к статическим переменным для внедрения зависимостей - PullRequest
1 голос
/ 27 сентября 2011

Я хотел бы использовать этот шаблон для включения внедрения зависимостей в мой код. Я чувствую, что это соответствует игровой природе динамических языков [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 ]

1 голос
/ 04 ноября 2011

Альтернативного синтаксиса для этого не существует.Вам нужна временная переменная, чтобы обмануть парсер.

0 голосов
/ 27 сентября 2011

Попробуйте

$class = self::$FOO;
$this->foo = $class::getInstance();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...