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一些服务器端特性的配置加强php的安全
Oct 09 PHP
php学习笔记 数组的常用函数
Jun 13 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
Nov 12 PHP
php中magic_quotes_gpc对unserialize的影响分析
Dec 16 PHP
php析构函数的简单使用说明
Aug 24 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
Mar 29 PHP
ThinkPHP中create()方法自动验证表单信息
Apr 28 PHP
php中请求url的五种方法总结
Jul 13 PHP
PHP实现的贪婪算法实例
Oct 17 PHP
PHP静态延迟绑定和普通静态效率的对比
Oct 20 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 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
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
php zip文件解压类代码
2009/12/02 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
vue实现组件之间传值功能示例
2018/07/13 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
Python实现partial改变方法默认参数
2014/08/18 Python
python网络编程之数据传输UDP实例分析
2015/05/20 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
python如何实现DES加密
2020/09/21 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
UML设计模式笔试题
2014/06/07 面试题
行政部主管岗位职责
2013/12/28 职场文书
关于元旦的广播稿
2014/02/16 职场文书
微笑服务演讲稿
2014/05/13 职场文书
国防教育标语
2014/10/08 职场文书
先进个人事迹材料
2014/12/29 职场文书