Wie verwende ich eine Klassenkonstante in einem Klassenattribut in PHP?

8

Hier ist der Code, der nicht funktioniert:

%Vor%

Scheint, dass Klassenkonstanten nicht zur "Kompilierzeit" verfügbar sind, sondern nur zur Laufzeit. Kennt jemand eine Problemumgehung? (define funktioniert nicht)

Danke

    
Antoine 28.11.2010, 14:29
quelle

2 Antworten

10

Das Problem in Ihrer Klassendeklaration ist nicht, dass Sie eine Konstante verwenden, sondern einen Ausdruck.

Klassenmitgliedsvariablen heißen "Eigenschaften". (...) Sie werden mit einem der Schlüsselwörter public, protected oder private definiert, gefolgt von einer normalen Variablendeklaration. Diese Deklaration kann eine Initialisierung beinhalten, aber diese Initialisierung muss ein konstanter Wert sein - das heißt, sie muss zur Kompilierzeit ausgewertet werden können und darf nicht von Laufzeit-Informationen abhängig sein bewertet.

Diese einfache Deklaration zum Beispiel wird nicht kompiliert (Parse-Fehler):

%Vor%

Wenn wir jedoch Ihre Klassendeklaration so ändern, dass sie die einfache Konstante verwendet, und nicht eine mit dieser Konstante verkettete Zeichenkette, wird sie wie erwartet funktionieren.

%Vor%

Als Umgehung könnten Sie Ihre Eigenschaften im Konstruktor initialisieren:

%Vor%

Ich hoffe, das hilft dir,
Alin

    
Alin Purcaru 28.11.2010, 14:41
quelle
0

Beachten Sie, dass dies für PHP 5.6 und höher möglich ist.

Siehe Ссылка :

  

Es ist jetzt möglich, einen Skalarausdruck anzugeben, der numerische und String-Literale und / oder Konstanten in Kontexten enthält, in denen PHP zuvor einen statischen Wert erwartet hat, wie zB Konstanten- und Eigenschaftsdeklarationen und Standardfunktionsargumente.

    
samluthebrave 21.03.2017 02:58
quelle

Tags und Links