Heim > Artikel > Backend-Entwicklung > Ein einfaches Tutorial zur Wiederverwendung von PHP-Code
Seit PHP 5.4.0 implementiert PHP eine Code-Wiederverwendungsmethode namens Trait.
Traits ist ein Code-Wiederverwendungsmechanismus für Sprachen mit einfacher Vererbung wie PHP. Eigenschaft Um die Einschränkungen von Sprachen mit einfacher Vererbung zu verringern und Entwicklern die Freiheit zu geben, Methodensätze in unabhängigen Klassen innerhalb verschiedener Hierarchien wiederzuverwenden. Eigenschaften Die Semantik der Klassenzusammensetzung definiert eine Möglichkeit, die Komplexität zu reduzieren und die typischen Probleme zu vermeiden, die mit traditioneller Mehrfachvererbung und Mixins verbunden sind.
Einfache Verwendung
<?phptrait Test { public function echoHello() { echo 'Hello Trait'; } }class Base{ public function index() { echo 'index'; } }class One extends Base{ use Test; }class Two extends Base{ use Test; } $one = new One(); $two = new Two();echo $one->echoHello();echo $one->index();echo $two->echoHello();
Die Ergebnisausgabe ist der Hello Trait-Index Hello Trait.
Von der Basisklasse geerbte Mitglieder werden durch von Trait eingefügte Mitglieder überschrieben. Die Rangfolge ist, dass Mitglieder der aktuellen Klasse Trait-Methoden überschreiben und Traits geerbte Methoden überschreiben.
<?php trait Test{ public function echoHello() { echo 'Hello Trait'; }}class Base { use Test; public function echoHello() { echo 'Hello Base'; }}class One extends Base { use Test; public function echoHello() { echo 'Hello One'; }}class Two extends Base { use Test;}$one = new One();$two = new Two();$base = new Base(); echo $one->echoHello();echo $two->echoHello();echo $base->echoHello(); 结果输出 Hello One Hello Trait Hello Base。 ?>
Das Beispiel der ersten Klasse deckt die Basisklasse und den Merkmalstest ab und zeigt an, dass die Methodenpriorität der aktuellen Klasse höher ist als diese.
Klasse Zwei Beispiele behandeln die Basisklasse: Trait hat eine höhere Priorität als die geerbte Basisklasse.
Das Basisbeispiel der Klasse deckt den Trait-Test ab und zeigt an, dass die Methodenpriorität der aktuellen Klasse höher ist als Trait.
Mehrere Merkmale, die in der Verwendungsanweisung durch Kommas getrennt aufgeführt sind, können in eine Klasse eingefügt werden.
<?phptrait Test { public function echoHello() { echo 'Hello '; } }trait TestTwo { public function echoWord() { echo 'word !'; } }class One{ use Test,TestTwo; } $one = new One();echo $one->echoHello();echo $one->echoWord();
Die Ergebnisausgabe ist Hallo Wort!.
Wenn zwei Traits eine Methode mit demselben Namen einfügen, tritt ein schwerwiegender Fehler auf, wenn der Konflikt nicht explizit gelöst wird.
<?phptrait Test { public function echoHello() { echo 'Hello Test'; } public function echoWord() { echo 'word Test'; } }trait TestTwo { public function echoHello() { echo 'Hello TestTwo '; } public function echoWord() { echo 'word TestTwo'; } }class One{ use Test, TestTwo { Test::echoHello as echoTest; Test::echoWord insteadof TestTwo; TestTwo::echoHello insteadof Test; } } $one = new One();echo $one->echoTest();echo $one->echoWord();echo $one->echoHello();
Ausgabeergebnis: Hallo Testwort Test Hallo TestTwo.
Verwenden Sie as als Alias, d. h. Test::echoHello als echoTest; geben Sie echoHello im Trait-Test aus.
Verwenden Sie den Operator anstelle von, um andere Traits auszuschließen, d. h. Test::echoWord anstelle von TestTwo ; Die Ausgabe ist Word Test. Verwenden Sie echoWord
im Trait Test, um die Kontrollberechtigungen der Methode
<?phptrait Test { public function echoHello() { echo 'Hello'; } public function echoWord() { echo 'word'; } }trait TestTwo { public function echoHello() { echo 'Hello TestTwo '; } public function echoWord() { echo 'word TestTwo'; } }class One{ use Test { echoHello as private; } }class Two{ use Test { echoHello as private echoTwo; } } $one = new One(); $two = new Two();echo $two->echoHello();
zu ändern und das Ergebnis auszugeben. Hallo.
Verwenden Sie es wie in Klasse eins, um echoHello privat zu machen. Dann kann auf echoHello nicht über Klasse eins zugegriffen werden.
Verwenden Sie es wie in Klasse zwei, um es zuerst umzubenennen, und legen Sie dann die neue Benennungsmethode als privat fest. Auf die Methoden im ursprünglichen Merkmal kann normal zugegriffen werden.
Attribute können in Trait auch wie eine Klasse definiert werden. Es ist sehr nützlich!
Die oben genannten sind einige grundlegende Verwendungsmöglichkeiten von Traits. Weitere Einzelheiten finden Sie im offiziellen Handbuch. Hier sind einige Dinge zu beachten: Punkt: Trait überschreibt die von der aufrufenden Klasse geerbte Methode der übergeordneten Klasse.
Ein einzelnes Trait kann aus mehreren Traits bestehen. In einer einzelnen Klasse können mehrere Traits verwendet werden. Trait unterstützt Modifikationswörter (Modifikatoren) wie final, static, abstract, die wir anstelle von und als Operatoren verwenden können, um Konflikte zwischen Traits zu lösen.
Verwandte Empfehlungen:
Detaillierte Erläuterung von Merkmalen und ihrer Anwendung in PHP
Detaillierte Erläuterung der Verwendung des Mechanismus zur Wiederverwendung von Merkmalen in PHP
Detaillierte Erläuterung der Merkmalsverwendung in PHP
Das obige ist der detaillierte Inhalt vonEin einfaches Tutorial zur Wiederverwendung von PHP-Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!