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 相关文章推荐
编译问题
Oct 09 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
PHP对象转换为数组函数(递归方法)
Feb 04 PHP
一个漂亮的php验证码类(分享)
Aug 06 PHP
修改ThinkPHP缓存为Memcache的方法
Jun 25 PHP
php实现用于删除整个目录的递归函数
Mar 16 PHP
php微信开发之带参数二维码的使用
Aug 03 PHP
PHP基本语法实例总结
Sep 09 PHP
Zend Framework入门教程之Zend_Session会话操作详解
Dec 08 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
YII框架关联查询操作示例
Apr 29 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 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开发框架的对比
2013/07/05 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
javascript 触发事件列表 比较不错
2009/09/03 Javascript
一个简单的JavaScript 日期计算算法
2009/09/11 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
2015/08/11 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
2020/02/15 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
python 反向输出字符串的方法
2018/07/16 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
Python爬虫requests库多种用法实例
2020/05/28 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
美国排名第一的在线葡萄酒商店:Wine.com
2016/09/07 全球购物
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
监理员的岗位职责
2013/11/13 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
病危通知书样本
2015/04/17 职场文书
汉字听写大会观后感
2015/06/12 职场文书
教你用Python matplotlib库制作简单的动画
2021/06/11 Python
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL