Home  >  Article  >  Backend Development  >  Is PHP single inheritance or multiple inheritance?

Is PHP single inheritance or multiple inheritance?

王林
王林Original
2019-09-19 17:56:433229browse

Is PHP single inheritance or multiple inheritance?

PHP does not support multiple inheritance, so how to implement multiple inheritance?

Can be implemented using interface or trait

Interface We won’t explain too much here. The principle is that one class can implement multiple interfaces. The following code can illustrate this.

interface test1{
    public function connect();
}

interface test2{
    public function contact();
}

// 类可以同时实现多个接口
class myCode implements test1,test2{
    public function connect(){
    echo "test1!";
    }
    public function contact(){
    echo "test2!":
    }
}

Let’s focus on the trait implementation of multiple inheritance (in fact, it is not called multiple inheritance, it should be called a function similar to multiple inheritance)
So what is a trait?
Answer: It looks like both a class and an interface, but it is actually neither. Trait can be regarded as a partial implementation of a class, which can be mixed into one or more existing PHP classes. Its functions are twofold: indicating what the class can do; and providing Modular implementation. Trait is a code reuse technology that provides a flexible code reuse mechanism for PHP's single inheritance restriction.
So how to implement trait? Look at the following code:

//基本类
  class basicTest{
    public function test(){
      echo "hello,world\n";
    }
  }
  //traitOne
  trait traitOne{
    public function test(){
      echo "this is trait one";
    }
    public function testOne(){
      echo "one<br />";
    }
  }
  //traitTwo
  trait traitTwo{
    // public function test(){
      // echo "this is trait two!";
    // }
    public function testTwo(){
      echo "Two<br />";
    }
   }
  //继承基本类,并use trait
  class myCode extends basicTest{
    use traitOne,traitTwo;
    public function test(){
      echo "hehaha!!<br />";
    }
  }

  $obj = new myCode();
  $obj->testTwo();

Note:

Priority: own method>trait method>inherited method (this is how it works.)
If we open the comments in the above code, an error will be reported because the methods in the two traits have the same name.

Recommended tutorial: PHP video tutorial

The above is the detailed content of Is PHP single inheritance or multiple inheritance?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
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