PHP interface multiple inheritance and tarits method to achieve multiple inheritance effect_php skills

jacklove
Release: 2023-04-02 08:34:02
Original
1851 people have browsed it

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. It needs Friends can refer to the following

The example of this article describes the method of multiple inheritance of PHP interface and tarits to achieve the effect of multiple inheritance. Share it with everyone for your reference, the details are as follows:

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("模特");
//运行结果
/**
  接口继承,要实现所有相关抽象方法
  模特正在跳舞!
**/
Copy after login

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("周杰伦");
//运行结果
/**
  接口继承,要实现父接口所有相关方法!
  模特正在跳舞!
  周杰伦正在唱歌!
**/
Copy after login

##taritsMultiple inheritance

In multiple inheritance, a class can inherit multiple parent classes at the same time. The function of combining multiple parent classes in C uses this model to enhance the flexibility of integration. However, multiple inheritance is too flexible and will lead to "diamond inheritance". Therefore, there are many difficulties in using it, and the model has become more complicated. 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 (); 
>
Copy after login

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

Articles you may be interested in:

thinkPHP5 framework database coherent operation cache() usage detailed explanation

thinkPHP3.2 Explanation of the method of implementing paging custom styles

Example analysis of multi-image upload function implemented by Laravel framework Blob

The above is the detailed content of PHP interface multiple inheritance and tarits method to achieve multiple inheritance effect_php skills. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
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