Home > Backend Development > PHP Problem > Can php inherit from multiple parent classes?

Can php inherit from multiple parent classes?

(*-*)浩
Release: 2023-02-25 11:40:01
Original
4741 people have browsed it

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.

Can php inherit from multiple parent classes?

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 则覆盖了被继承的方法。
Copy after login

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();
Copy after login

Run result:

This is trait two 
This is trait two_1
Copy after login

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!

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template