php 多继承的几种常见实现方法示例

yipeiwu_com6年前PHP基础知识

本文实例讲述了php 多继承的几种常见实现方法。分享给大家供大家参考,具体如下:

class Parent1 {
  function method1() {}
  function method2() {}
}
class Parent2 {
  function method3() {}
  function method4() {}
}
class Child {
  protected $_parents = array();
  public function Child(array $parents=array()) {
    $this->_parents = $parents;
  }
  public function __call($method, $args) {
    // 从“父类"中查找方法
    foreach ($this->_parents as $p) {
      if (is_callable(array($p, $method))) {
        return call_user_func_array(array($p, $method), $args);
      }
    }
    // 恢复默认的行为,会引发一个方法不存在的致命错误
    return call_user_func_array(array($this, $method), $args);
  }
}
$obj = new Child(array(new Parent1(), new Parent2()));
print_r( array($obj) );die;
$obj->method1();
$obj->method3();

运行结果:

Array
(
    [0] => Child Object
        (
            [_parents:protected] => Array
                (
                    [0] => Parent1 Object
                        (
                        )

                    [1] => Parent2 Object
                        (
                        )

                )

        )

)

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("模特");

运行结果:

接口继承,要实现所有相关抽象方法!
模特正在跳舞!

相关文章

PHP 7.4中使用预加载的方法详解

前言PHP 7.4增加了预加载支持,这一功能可以显着提高代码的性能。这是一个简单的预加载:为了预加载文件,您需要编写自定义PHP脚本此脚本在服务器启动时执行一次所有预加载的文件都可在内存中...

PHP使用JPGRAPH制作圆柱图的方法详解

PHP使用JPGRAPH制作圆柱图的方法详解

本文实例讲述了PHP使用JPGRAPH制作圆柱图的方法。分享给大家供大家参考,具体如下:制作圆柱图像的要点首先,要使用jpgraph库,我们先要去官网进行下载,网址:https://jpg...

PHP变量作用域(全局变量&局部变量)&global&static关键字用法实例分析

本文实例讲述了PHP变量作用域(全局变量&局部变量)&global&static关键字用法。分享给大家供大家参考,具体如下:我们知道,变量呢,其实就相当于我们用来储...

在PHP中使用与Perl兼容的正则表达式

前言  PHP被大量的应用于Web的后台CGI开发,通常是在用户数据数据之后得出某种结果,但是如果用户输入的数据不正确,就会出现问题,比如说某人的生日是"2月30日"!...

php 使用 __call实现重载功能示例

本文实例讲述了php 使用 __call实现重载功能。分享给大家供大家参考,具体如下:<?php /**  * Created by Ph...