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安全配置
Dec 06 PHP
PHP 判断变量类型实现代码
Oct 23 PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 PHP
深入Apache与Nginx的优缺点比较详解
Jun 17 PHP
PHP添加Xdebug扩展的方法
Feb 12 PHP
ZF框架实现发送邮件的方法
Dec 03 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
Dec 14 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 PHP
thinkPHP基于ajax实现的菜单与分页示例
Jul 12 PHP
PHP不使用内置函数实现字符串转整型的方法示例
Jul 03 PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 PHP
laravel请求参数校验方法
Oct 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和Java的des加密解密代码分享
2014/06/26 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
JavaScript 保存数组到Cookie的代码
2010/04/14 Javascript
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
Angular8基础应用之表单及其验证
2019/08/11 Javascript
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
分享15个最受欢迎的Python开源框架
2014/07/13 Python
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
英国婴儿和儿童服装网站:Vertbaudet
2018/04/02 全球购物
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
HashMap和Hashtable的区别
2013/05/18 面试题
幼儿教师个人求职信范文
2013/09/21 职场文书
母亲七十大寿答谢词
2014/01/18 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
学习保证书
2015/01/17 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
Python中Schedule模块使用详解 周期任务神器
2022/04/19 Python
Spring中的@Transactional的工作原理
2022/06/05 Java/Android