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 相关文章推荐
3种平台下安装php4经验点滴
Oct 09 PHP
PHP XML数据解析代码
May 26 PHP
PHP mcrypt可逆加密算法分析
Jul 19 PHP
php调用C代码的实现方法
Mar 11 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
May 12 PHP
Mac环境下php操作mysql数据库的方法分享
May 11 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
Apr 21 PHP
php查询内存信息操作示例
May 09 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
Oct 17 PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 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实用小技巧之调用录像的方法
Dec 05 #PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 #PHP
You might like
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
2013/01/27 PHP
使用PHP生成PDF方法详解
2015/01/23 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
2016/08/08 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
2007/11/30 Javascript
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
性能优化之代码优化页面加载速度
2017/03/01 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
JQuery获取元素尺寸、位置及页面滚动事件应用示例
2019/05/14 jQuery
详解vuex之store源码简单解析
2019/06/13 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
Python中模拟enum枚举类型的5种方法分享
2014/11/22 Python
Python爬取读者并制作成PDF
2015/03/10 Python
Python多线程和队列操作实例
2015/06/21 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
用Python逐行分析文件方法
2019/01/28 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
俄罗斯名牌服装网上商店:UNIQUE FABRIC
2019/07/25 全球购物
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
班主任先进事迹材料
2014/12/17 职场文书
停车场管理制度范本
2015/08/05 职场文书
初中政治教学工作总结
2015/08/13 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书