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 记录进行累加并显示总时长为秒的结果
Nov 04 PHP
php文件上传的例子及参数详解
Dec 12 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
php利用新浪接口查询ip获取地理位置示例
Jan 20 PHP
php解压文件代码实现php在线解压
Feb 13 PHP
ThinkPHP中自定义目录结构的设置方法
Aug 15 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
基于php实现的验证码小程序
Dec 13 PHP
PHP会话控制实例分析
Dec 24 PHP
CodeIgniter框架常见用法工作总结
Mar 16 PHP
Yii2框架数据验证操作实例详解
May 02 PHP
PHP+iframe模拟Ajax上传文件功能示例
Jul 02 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
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
杏林同学录(三)
2006/10/09 PHP
一篇有意思的技术文章php介绍篇
2010/10/26 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
nodejs的HTML分析利器node-jquery用法浅析
2016/11/08 NodeJs
js编写简单的聊天室功能
2017/08/17 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
JS 实现百度搜索功能
2018/02/01 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
Python实现比较两个列表(list)范围
2015/06/12 Python
Python抓取框架 Scrapy的架构
2016/08/12 Python
python中如何使用朴素贝叶斯算法
2017/04/06 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
html5实现完美兼容各大浏览器的播放器
2014/12/26 HTML / CSS
唤醒头发毛囊的秘密武器:Grow Gorgeous
2016/08/28 全球购物
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
敏捷开发的主要原则都有哪些
2015/04/26 面试题
健康家庭事迹材料
2014/05/02 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书