この記事では、PHP で多重継承を実装するためのトレイト構文 (コード例) を紹介します。一定の参考値があります。必要な友人は参照できます。お役に立てば幸いです。助けてくれた。
PHP には多重継承機能がありません。多重継承をサポートするプログラミング言語であっても、この機能を使用することはほとんどありません。ほとんどの人の意見では、多重継承は良い設計方法ではありません。
しかし、開発で多重継承を使用する場合はどうすればよいでしょうか?
以下では、php で多重継承を実装するために「trait」を使用する場合の問題を紹介します。
PHP5.4 以降、PHP はコードを再利用するために「trait」構文を実装しました。
Trait は、PHP の単一継承言語用に用意されたコード再利用メカニズムです。単一継承の制限を軽減するために、さまざまな構造レベルでメソッドを再利用するメソッドが開発されています。
Trait とクラスの組み合わせのセマンティクスは、複雑さを軽減し、従来の多重継承と Mixin に関連する典型的な問題を回避する方法を定義します。クラス。
基本クラスから継承されたメンバーは、トレイトによって挿入されたメンバーによって上書きされることに注意してください。優先順位は、現在のクラスのメンバーがトレイトのメソッドをオーバーライドし、トレイトが継承されたメソッドをオーバーライドすることです。
最初に例を見てみましょう:
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();
実行結果:
This is trait two This is trait two_1
以上がPHP で多重継承を実装するための特性構文の紹介 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。