Свойства Zend и статического класса - PullRequest
1 голос
/ 02 сентября 2010

Я пытаюсь присвоить значение статическому свойству класса при его определении:

namespace Base;

abstract class Skeleton {   

protected static $entityManager = \Zend_Registry::get("EntityManager");
    ...
}

Когда я пытаюсь выполнить этот код, я получаю эту ошибку:

Parse error: syntax error, unexpected '(', expecting ',' or ';' in /var/www/
somewhere/application/models/Base/Skeleton.php on line 6

Если я просто назначу ему простое строковое значение:

protected static $entityManager = "string";

Все в порядке. Я делаю что-то, что PHP не может обработать? Если да, то как это решить?

Ответы [ 2 ]

3 голосов
/ 02 сентября 2010

Вы не можете поместить код, который нужно выполнить, как переменную класса, статическую или нет.

Подумайте об этом, в какой момент Zend_Registry::get("EntityManager") исполняется, его нельзя выполнить, когда класссоздается потому, что вы установили его как static.

Даже если он не был статичным, когда запускается Zend_Registry::get("EntityManager")?Когда объект создается или один раз?Его нужно поместить в функцию внутри класса.

1 голос
/ 02 сентября 2010

Свойства класса могут не зависеть от данных, которые должны быть оценены во время выполнения:

[Переменные-члены класса] могут включать в себя инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть в состоянии быть оцененной во время компиляции и не должна зависеть от информации времени выполнения для оценки ,

Добавить установщик и установить значение во время начальной загрузки.

...