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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top