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上传、管理照片示例
Oct 09 PHP
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
Nov 18 PHP
php csv操作类代码
Dec 14 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
Aug 09 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
php中实现精确设置session过期时间的方法
Jul 17 PHP
php基于base64解码图片与加密图片还原实例
Nov 03 PHP
IOS 开发之NSDictionary转换成JSON字符串
Aug 14 PHP
PHP递归实现快速排序的方法示例
Dec 18 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 PHP
PHP 文件上传限制问题
Sep 01 PHP
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
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
建立文件交换功能的脚本(三)
2006/10/09 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
[IE&amp;FireFox兼容]JS对select操作
2007/01/07 Javascript
js之WEB开发调试利器:Firebug 下载
2007/01/13 Javascript
JQuery 入门实例1
2009/06/25 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
JS解析XML实例分析
2015/01/30 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
python使用分治法实现求解最大值的方法
2015/05/12 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
Python编程scoketServer实现多线程同步实例代码
2018/01/29 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
NumPy中的维度Axis详解
2019/11/26 Python
Python转换字典成为对象,可以用&quot;.&quot;方式访问对象属性实例
2020/05/11 Python
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
会计专业毕业生自我评价
2013/09/25 职场文书
企业授权委托书范本
2014/09/22 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
自主招生学校推荐信
2014/09/26 职场文书
欢迎家长标语
2014/10/08 职场文书
党章学习心得体会2016
2016/01/14 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
英镑符号 £
2022/02/17 杂记