Zend et les propriétés statiques de classe
-
26-09-2019 - |
Question
Je suis en train d'attribuer une valeur à une propriété de classe statique lorsque définir:
namespace Base;
abstract class Skeleton {
protected static $entityManager = \Zend_Registry::get("EntityManager");
...
}
Lorsque je tente d'exécuter ce code je reçois cette erreur:
Parse error: syntax error, unexpected '(', expecting ',' or ';' in /var/www/
somewhere/application/models/Base/Skeleton.php on line 6
Si je viens attribuer une valeur de chaîne simple à elle:
protected static $entityManager = "string";
Everyting est très bien. Suis-je faire quelque chose PHP ne peut pas gérer? Si oui, comment résoudre ce problème?
La solution
Vous ne pouvez pas mettre le code que les besoins d'exécuter en tant que variable de classe, statique ou non.
Pensez-y, à quel point le fait Zend_Registry::get("EntityManager")
s'exécuté, il ne peut pas être exécutée lorsque la classe est créée parce que vous avez défini comme static
.
Même si elle n'a pas été statique, quand est-Zend_Registry::get("EntityManager")
pour la course? Lorsque l'objet est instancié ou une fois? Il doit être mis en fonction à l'intérieur de la classe.
Autres conseils
propriétés de classe ne peuvent pas dépendre de données qui doit être évalué à Durée:
[variables membres de classe] peut inclure une initialisation, mais cette initialisation doit être une valeur constante - qui est, il doit pouvoir être évaluée au moment de la compilation et ne doit pas dépendre d'une information d'exécution afin d'évaluer .
Ajouter un setter et définissez la valeur au cours d'amorçage.