Home  >  Article  >  Backend Development  >  PHP interface multiple inheritance and tarits implement multiple inheritance example sharing

PHP interface multiple inheritance and tarits implement multiple inheritance example sharing

小云云
小云云Original
2018-01-11 10:47:141654browse

This article mainly introduces the method of PHP interface multi-inheritance and tarits to achieve multi-inheritance effect. It analyzes PHP interface-based multi-inheritance and the simple operation skills of tarits introduced in PHP5.4 to realize multi-inheritance function in the form of examples. Friends in need You can refer to it, I hope it can help everyone.

Multiple inheritance of interfaces

In PHP's object-oriented interface, interfaces can inherit interfaces. PHP classes can only inherit from one parent class (single inheritance), but interfaces can implement multiple inheritance and can inherit one or more interfaces. Of course, interface inheritance uses the extends keyword just like class inheritance. If you want multiple inheritances, just separate the inherited interfaces with commas.

It should be noted that when your interface inherits other interfaces, it directly inherits the static constant attributes and abstract methods of the parent interface, so the class must implement all relevant abstract methods when implementing the interface.

The following is an example:

1. Inherit a single interface


<?php
interface testA{
  function echostr();
}
interface testB extends testA{
  function dancing($name);
}
class testC implements testB{
  function echostr(){
    echo "接口继承,要实现所有相关抽象方法!";
    echo "<br>";
  }
  function dancing($name){
    echo $name."正在跳舞!";
  }
}
$demo=new testC();
$demo->echostr();
$demo->dancing("模特");
//运行结果
/**
  接口继承,要实现所有相关抽象方法
  模特正在跳舞!
**/

2 .Inherit multiple interfaces


<?php
interface testA{
  function echostr();
}
interface testB{
  function dancing($name);
}
interface testC extends testA,testB{
  function singing($nickname);
}
class testD implements testC{
  function echostr(){
    echo "接口继承,要实现父接口所有相关方法!";
    echo "<br />";
  }
  function dancing($name){
    echo $name."正在跳舞!";
    echo "<br />";
  }
  function singing($nickname){
    echo $nickname."正在唱歌!";
  }
}
$demo=new testD();
$demo->echostr();
$demo->dancing("模特");
$demo->singing("周杰伦");
//运行结果
/**
  接口继承,要实现父接口所有相关方法!
  模特正在跳舞!
  周杰伦正在唱歌!
**/

taritsMultiple inheritance

One class can be included in multiple inheritance The function of inheriting multiple parent classes at the same time and combining multiple parent classes is used in C++ to enhance the flexibility of integration. However, multiple inheritance is too flexible and will bring about "diamond inheritance", so there are many problems in using it. Difficulty, the model has become more complicated, and now most languages ​​​​have abandoned the multiple inheritance model.
But sometimes I want to use multiple inheritance, but PHP doesn’t have multiple inheritance, so I invented such a thing.

Traits can be understood as a set of methods that can be called by different classes, but traits are not classes! Cannot be instantiated. Let’s take a look at the syntax with an example:


<?php
trait myTrait{
  function traitMethod1(){}
  function traitMethod2(){}
}
//然后是调用这个traits,语法为:
class myClass{
  use myTrait;
}
//这样就可以通过use myTraits,调用Traits中的方法了,比如:
$obj = new myClass();
$obj-> traitMethod1 ();
$obj-> traitMethod2 (); 
>

For specific introduction and usage, please see the official introduction.

Related recommendations:

php methods to implement interface inheritance and interface multiple inheritance principles

6 kinds of interface analysis predefined in PHP

php uses interfaces and combinations to simulate multiple inheritance_PHP tutorial

The above is the detailed content of PHP interface multiple inheritance and tarits implement multiple inheritance example sharing. 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