Zend und statische Klasseneigenschaften
-
26-09-2019 - |
Frage
Ich versuche, einen Wert zu einer statischen Klasse Eigenschaft zuweisen, wenn es zu definieren:
namespace Base;
abstract class Skeleton {
protected static $entityManager = \Zend_Registry::get("EntityManager");
...
}
Wenn ich versuche, diesen Code auszuführen ich diesen Fehler:
Parse error: syntax error, unexpected '(', expecting ',' or ';' in /var/www/
somewhere/application/models/Base/Skeleton.php on line 6
Wenn ich zuweisen nur einen einfachen String-Wert, um es:
protected static $entityManager = "string";
Every ist in Ordnung. Bin ich etwas zu tun PHP nicht umgehen kann? Wenn ja, wie diese zu lösen?
Lösung
Sie können nicht Code zu setzen, dass der Bedarf der Ausführung als Klassenvariable, statisch oder nicht.
Denken Sie darüber nach, an welchem ??Punkt tut Zend_Registry::get("EntityManager")
ausgeführt werden sollen, kann es nicht ausgeführt werden, wenn die Klasse erstellt wird, weil Sie es als static
gesetzt haben.
Auch wenn es nicht statisch war, wenn nicht Zend_Registry::get("EntityManager")
laufen lassen? Wenn das Objekt instanziiert oder einmal? Es muss in einer Funktion innerhalb der Klasse gesetzt werden.
Andere Tipps
Klasse Eigenschaften abhängen können nicht auf Daten, die ausgewertet werden muss bei Laufzeit:
[Klasse Membervariablen] kann eine Initialisierung umfassen, aber diese Initialisierung muss ein konstanter Wert sein - das heißt, er muss bei der Kompilierung ausgewertet werden und muß hängt nicht von Laufzeitinformationen ausgewertet, um zu .
einen Setter hinzufügen und den Wert während des Bootstrap eingestellt.