PHP-Eigenschaften - Ändere den Wert der statischen Eigenschaft in der geerbten Klasse

8

Also, das ist mein Merkmal:

%Vor%

Dies ist die Basisklasse:

%Vor%

Dies sind meine zwei letzten Klassen:

%Vor%

Hier ist der Teil des Codes, der diese Klassen ausführt:

%Vor%

Dieser Code funktioniert nicht, da sich PHP darüber beschwert, dieselben Eigenschaften in Class2 wie in Cacheable zu definieren. Ich kann sie nicht in ihren Konstruktoren setzen, weil ich sie lesen möchte, bevor ich den Konstruktor starte. Ich bin offen für Ideen, jede Hilfe wäre willkommen. :)

BEARBEITEN:

Nun, ich benutze dieses Cacheable-Merkmal an mehreren Stellen, also bin ich irgendwie durcheinander gekommen. :) Das funktioniert gut so. Aber ich habe eine andere Klasse, die direkt die Cacheable-Eigenschaft verwendet, und wenn ich versuche, dies in dieser Klasse zu tun, erhalte ich den aufgetretenen Fehler. Also ... Nimm einfach an, dass die BaseClass nicht abstrakt ist und ich versuche, diese Cache-Eigenschaften darauf zu setzen. Die Frage bleibt die gleiche.

    
morgoth84 30.11.2013, 10:56
quelle

3 Antworten

6

Sie können Merkmaleigenschaften nicht neu zuweisen.

Aus dem PHP-Handbuch Ссылка

Siehe Beispiel # 12 Konfliktlösung

  

Wenn ein Merkmal eine Eigenschaft definiert, kann eine Klasse keine Eigenschaft definieren   mit dem gleichen Namen, ansonsten wird ein Fehler ausgegeben. Es ist ein E_STRICT wenn   die Klassendefinition ist kompatibel (gleiche Sichtbarkeit und Anfangswert)   oder sonst fataler Fehler.

Eine Lösung wäre, Überschreibungseigenschaften in der Klasse

zu definieren %Vor%

und dann modifiziere deine Eigenschaft als solche ...

%Vor%     
Tariq C 07.12.2013 04:50
quelle
0

Sie könnten defined () verwenden:

%Vor%

Oder könnten Sie vielleicht mit der geschützten Variable leben anstatt mit der statischen?

    
malhal 20.08.2016 17:22
quelle
0

Sie können Eigenschaften nicht überschreiben, aber Sie können Funktionen überschreiben. Eine der möglichen Lösungen, wenn Sie die angegebenen Eigenschaften verwenden und sie nicht ändern möchten, könnte sein:

%Vor%     
Olga Farber 17.01.2018 07:03
quelle