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


Posted in PHP onNovember 18, 2019

本文实例讲述了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程序设计有所帮助。

PHP 相关文章推荐
用php实现批量查询清除一句话后门的代码
Jan 20 PHP
php htmlspecialchars加强版
Feb 16 PHP
php数据库连接时容易出错的特殊符号问题
Sep 01 PHP
php实现rc4加密算法代码
Apr 25 PHP
摘自织梦CMS的HTTP文件下载类
Aug 08 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
Jun 13 PHP
php+mysql查询实现无限下级分类树输出示例
Oct 03 PHP
highchart数据源纵轴json内的值必须是int(详解)
Feb 20 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
php实现websocket实时消息推送
Mar 30 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
Jul 31 PHP
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
Apr 01 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 #PHP
PHP cookie与session会话基本用法实例分析
Nov 18 #PHP
php pdo连接数据库操作示例
Nov 18 #PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 #PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 #PHP
php实现微信小程序授权登录功能(实现流程)
Nov 13 #PHP
php 命名空间(namespace)原理与用法实例小结
Nov 13 #PHP
You might like
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
解析PHP缓存函数的使用说明
2013/05/10 PHP
PHP 转义使用详解
2013/07/15 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
google jQuery 引用文件,jQuery 引用地址集合(jquery 1.2.6至jquery1.5.2)
2011/04/24 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
浅谈react.js中实现tab吸顶效果的问题
2017/09/06 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
Python中的进程分支fork和exec详解
2015/04/11 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
英国家用电器购物网站:Hughes
2018/02/23 全球购物
应届生污水处理求职信
2013/11/06 职场文书
公司开除员工通知
2015/04/22 职场文书
钱学森观后感
2015/06/04 职场文书
行政处罚决定书
2015/06/24 职场文书
优质护理服务心得体会
2016/01/22 职场文书
Go语言基础知识点介绍
2021/07/04 Golang
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android