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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top