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 保留小数点
Apr 21 PHP
php实现jQuery扩展函数
Oct 30 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
Apr 02 PHP
基于asp+ajax和数据库驱动的二级联动菜单
May 06 PHP
解析yii数据库的增删查改
Jun 20 PHP
php将session放入memcached的设置方法
Feb 14 PHP
php+mysqli使用预处理技术进行数据库查询的方法
Jan 28 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
Dec 18 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
Laravel框架搜索分页功能示例
Feb 01 PHP
php无限极分类实现方法分析
Jul 04 PHP
laravel 解决强制跳转 https的问题
Oct 22 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
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
前端必学之PHP语法基础
2016/01/01 PHP
微信支付开发订单查询实例
2016/07/12 PHP
thinkphp自带验证码全面解析
2016/09/18 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
nodejs实用示例 缩址还原
2010/12/28 NodeJs
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
老生常谈遮罩层 滚动条的问题
2016/04/29 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
BootStrap中
2016/12/10 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
Python分支结构(switch)操作简介
2018/01/17 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
Python实现画图软件功能方法详解
2020/07/28 Python
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
党员干部2014全国两会学习心得体会
2014/03/10 职场文书
运动会开幕式主持词
2014/03/28 职场文书
党支部换届选举方案
2014/05/08 职场文书
维稳工作情况汇报
2014/10/27 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
应收账款管理制度
2015/08/06 职场文书