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 array_slice函数的使用以及参数详解
Aug 30 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
PHP中使用gettext来支持多语言的方法
May 02 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
PHP删除非空目录的函数代码小结
Feb 28 PHP
thinkphp实现图片上传功能分享
Mar 04 PHP
PHP ignore_user_abort函数详细介绍和使用实例
Jul 15 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
May 27 PHP
详解PHP对数组的定义以及数组的创建方法
Nov 27 PHP
PHP实现的文件操作类及文件下载功能示例
Dec 24 PHP
php中青蛙跳台阶的问题解决方法
Oct 14 PHP
php workerman定时任务的实现代码
Dec 23 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通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
JavaScript URL参数读取改进版
2009/01/16 Javascript
jQuery select操作控制方法小结
2010/05/26 Javascript
关于捕获用户何时点击window.onbeforeunload的取消事件
2011/03/06 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
checkbox使用示例
2013/08/23 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
python列表操作实例
2015/01/14 Python
详解Python中的join()函数的用法
2015/04/07 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
python 字典修改键(key)的几种方法
2018/08/10 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
大学生求职推荐信
2013/11/27 职场文书
舞蹈教师自荐信
2014/01/27 职场文书
电子商务专业求职信
2014/03/08 职场文书
矿泉水广告词
2014/03/20 职场文书
校车安全管理责任书
2015/05/11 职场文书
python实现局部图像放大
2021/11/17 Python
Python 中面向接口编程
2022/05/20 Python