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版(4)
Oct 09 PHP
PHP 文件上传进度条的两种实现方法的代码
Nov 25 PHP
Ha0k 0.3 PHP 网页木马修改版
Oct 11 PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 PHP
php利用iframe实现无刷新文件上传功能的代码
Sep 29 PHP
php 在windows下配置虚拟目录的方法介绍
Jun 26 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
php中JSON的使用与转换
Jan 14 PHP
php实现的xml操作类
Jan 15 PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 PHP
php flush无效,IIS7下php实时输出的方法
Aug 25 PHP
thinkPHP5 tablib标签库自定义方法详解
May 10 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中对2个数组相加的函数
2011/06/24 PHP
Yii2单元测试用法示例
2016/11/12 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
js多个物体运动功能实例分析
2016/12/20 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
2017/08/14 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
python和C语言混合编程实例
2014/06/04 Python
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
pycharm 实现光标快速移动到括号外或行尾的操作
2021/02/05 Python
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
Peter Alexander新西兰站:澳大利亚领先的睡衣设计师品牌
2016/12/10 全球购物
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
员工自我鉴定范文
2013/10/06 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
村道德模范事迹材料
2014/08/28 职场文书
房屋维修协议书范本
2014/09/25 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
MySQL查询日期时间
2022/05/15 MySQL