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.
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%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%Tags und Links php inheritance traits properties redefinition