PHP does not have multiple inheritance features. Even if it is a programming language that supports multiple inheritance, we rarely use this feature. In most people's opinion, multiple inheritance is not a good design method.
But what should we do if we use multiple inheritance in development?
The following introduces the problem of using traits to implement multiple inheritance in PHP. (Recommended learning: PHP video tutorial)
Since PHP5.4, PHP has implemented the trait syntax for code reuse.
Trait is a code reuse mechanism prepared for PHP's single inheritance language. In order to reduce the limitations of single inheritance, methods are developed to reuse methods at different structural levels. The semantics of Trait and Class combination define a way to reduce complexity and avoid typical problems related to traditional multiple inheritance and Mixin classes. .
需要注意的是,从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。
Let’s take an example first:
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();
Run result:
This is trait two This is trait two_1
The above is the detailed content of Can php inherit from multiple parent classes?. For more information, please follow other related articles on the PHP Chinese website!