php Trait ist ein Code-Wiederverwendungsmechanismus, der für Sprachen mit einfacher Vererbung vorbereitet ist. Trait reduziert die Einschränkungen von Sprachen mit einfacher Vererbung und ermöglicht Entwicklern die freie Verwendung unabhängiger Klassen in verschiedenen Hierarchien.
Merkmal
Seit PHP 5.4.0 hat PHP eine Code-Wiederverwendungsmethode implementiert, genannt eine Eigenschaft.
Trait ist ein Code-Wiederverwendungsmechanismus, der für Sprachen mit einfacher Vererbung wie PHP vorbereitet ist. Merkmale sollen die Einschränkungen von Sprachen mit einfacher Vererbung verringern und Entwicklern die freie Wiederverwendung von Methoden in unabhängigen Klassen innerhalb verschiedener Hierarchien ermöglichen. Die Semantik der Zusammensetzung von Merkmalen und Klassen definiert eine Möglichkeit, die Komplexität zu reduzieren und die typischen Probleme zu vermeiden, die mit herkömmlicher Mehrfachvererbung und Mixin-Klassen verbunden sind.
Trait ähnelt Class, ist jedoch nur darauf ausgelegt, Funktionalität auf feinkörnige und konsistente Weise zu kombinieren. Kann nicht durch das Merkmal selbst instanziiert werden. Es fügt der herkömmlichen Vererbung eine Kombination horizontaler Funktionen hinzu; das heißt, es ist keine Vererbung zwischen mehreren Klassen in einer Anwendung erforderlich.
Beispiel #1 Merkmalsbeispiel
<?php trait ezcReflectionReturnInfo { function getReturnType() { /*1*/ } function getReturnDescription() { /*2*/ } } class ezcReflectionMethod extends ReflectionMethod { use ezcReflectionReturnInfo; /* ... */ } class ezcReflectionFunction extends ReflectionFunction { use ezcReflectionReturnInfo; /* ... */ } ?>
Priorität ¶
Von der Basisklasse geerbte Mitglieder werden durch von der Eigenschaft eingefügte Mitglieder überschrieben. Die Rangfolge besteht darin, dass Mitglieder der aktuellen Klasse die Methoden des Merkmals überschreiben und das Merkmal die geerbten Methoden überschreibt.
Beispiel #2 Prioritätsbeispiel
Von der Basisklasse geerbte Mitglieder werden von der MyHelloWorld-Methode im eingefügten SayWorld-Merkmal überschrieben. Sein Verhalten stimmt mit den in der MyHelloWorld-Klasse definierten Methoden überein. Die Rangfolge ist, dass Methoden in der aktuellen Klasse Merkmalsmethoden überschreiben, die wiederum Methoden in der Basisklasse überschreiben.
<?php class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); ?>
Die obige Routine gibt Folgendes aus:
Hello World!
Beispiel Nr. 3 Ein weiteres Beispiel für eine Prioritätsreihenfolge
<?php trait HelloWorld { public function sayHello() { echo 'Hello World!'; } } class TheWorldIsNotEnough { use HelloWorld; public function sayHello() { echo 'Hello Universe!'; } } $o = new TheWorldIsNotEnough(); $o->sayHello(); ?>
Die obige Routine gibt Folgendes aus:
Hello Universe!
Weitere Informationen Für entsprechendes Wissen besuchen Sie bitte die PHP-Chinese-Website!
Das obige ist der detaillierte Inhalt vonWas bedeutet PHP-Merkmal?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!