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中使用Oracle数据库(3)
Oct 09 PHP
网络资源
Oct 09 PHP
PHP5.2下chunk_split()函数整数溢出漏洞 分析
Jun 06 PHP
PHP漏洞全解(详细介绍)
Nov 13 PHP
迅速确定php多维数组的深度的方法
Jan 07 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
Jul 15 PHP
php+mysql数据库查询实例
Jan 21 PHP
php 类中的常量、静态属性、非静态属性的区别
Apr 09 PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 PHP
PHP+原生态ajax实现的省市联动功能详解
Aug 15 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
Sep 30 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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
php与php MySQL 之间的关系
2009/07/17 PHP
php动态实现表格跨行跨列实现代码
2012/11/06 PHP
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
ThinkPHP中自定义目录结构的设置方法
2014/08/15 PHP
php实现的CSS更新类实例
2014/09/22 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
js有序数组的连接问题
2013/10/01 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
微信打开网址添加在浏览器中打开提示的办法
2019/05/20 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
Python创建日历实例
2014/08/21 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
2020/03/10 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
使用django自带的user做外键的方法
2020/11/30 Python
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
大学生职业规划论文
2014/01/11 职场文书
档案信息化建设方案
2014/05/16 职场文书
周末问候语大全
2015/11/10 职场文书
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js
python自动获取微信公众号最新文章的实现代码
2022/07/15 Python