Dieser Artikel bietet Ihnen eine Einführung in die Merkmalssyntax (Codebeispiele) für die Implementierung der Mehrfachvererbung. Ich hoffe, dass er einen gewissen Referenzwert hat wird dir helfen.
PHP verfügt nicht über Mehrfachvererbungsfunktionen. Selbst in einer Programmiersprache, die Mehrfachvererbung unterstützt, verwenden wir diese Funktion selten. Nach Meinung der meisten Menschen ist Mehrfachvererbung keine gute Entwurfsmethode.
Aber was sollen wir tun, wenn in der Entwicklung Mehrfachvererbung verwendet wird?
Im Folgenden wird das Problem der Verwendung von „Trait“ zur Implementierung der Mehrfachvererbung in PHP vorgestellt.
Seit PHP5.4 hat PHP die „Trait“-Syntax für die Wiederverwendung von Code implementiert.
Trait ist ein Code-Wiederverwendungsmechanismus, der für die Single-Inheritance-Sprache von PHP vorbereitet ist. Um die Einschränkungen der Einzelvererbung zu verringern, werden Methoden zur Wiederverwendung von Methoden auf verschiedenen Strukturebenen entwickelt. Die Semantik der Kombination von
Merkmalen und Klassen definiert eine Möglichkeit, die Komplexität zu reduzieren und typische Probleme im Zusammenhang mit herkömmlicher Mehrfachvererbung und Mixin-Klassen zu vermeiden.
Es ist zu beachten, dass von der Basisklasse geerbte Mitglieder durch vom Merkmal eingefügte Mitglieder überschrieben werden. Die Rangfolge besteht darin, dass Mitglieder der aktuellen Klasse die Methoden des Merkmals überschreiben und das Merkmal die geerbten Methoden überschreibt.
Nehmen wir zunächst ein Beispiel:
trait TestOne{ public function test() { echo "This is trait one <br/>"; } } trait TestTwo{ public function test() { echo "This is trait two <br/>"; } public function testTwoDemo() { echo "This is trait two_1"; } } class BasicTest{ public function test(){ echo "hello world\n"; } } class MyCode extends BasicTest{ //如果单纯的直接引入,两个类中出现相同的方法php会报出错 //Trait method test has not been applied, because there are collisions with other trait //methods on MyCode //use TestOne,TestTwo; //怎么处理上面所出现的错误呢,我们只需使用insteadof关键字来解决方法的冲突 use TestOne,TestTwo{ TestTwo::test insteadof TestOne; } } $test = new MyCode(); $test->test(); $test->testTwoDemo();
Laufergebnisse:
This is trait two This is trait two_1
Das obige ist der detaillierte Inhalt vonEinführung in die Merkmalssyntax zur Implementierung der Mehrfachvererbung in PHP (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!