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数组应该有多大的分析
Jul 30 PHP
PHP持久连接mysql_pconnect()函数使用介绍
Feb 05 PHP
深入PHP中慎用双等于(==)的详解
Jun 06 PHP
关于file_get_contents返回为空或函数不可用的解决方案
Jun 24 PHP
ThinkPHP实现批量删除数据的代码实例
Jul 02 PHP
ThinkPHP惯例配置文件详解
Jul 14 PHP
php获取CSS文件中图片地址并下载到本地的方法
Dec 02 PHP
浅谈php提交form表单
Jul 01 PHP
Yii2如何批量添加数据
May 17 PHP
深入理解php printf() 输出格式化的字符串
May 23 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
PHP通过get方法获得form表单数据方法总结
Sep 12 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中array_keys和array_unique函数源码的分析
2016/02/26 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
用javascript实现的激活输入框后隐藏初始内容
2007/06/29 Javascript
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
JQuery+Ajax无刷新分页的实例代码
2014/02/08 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
Python中的time模块与datetime模块用法总结
2016/06/30 Python
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
Python常见工厂函数用法示例
2018/03/21 Python
python实现一组典型数据格式转换
2018/12/15 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
python pycharm的安装及其使用
2019/10/11 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
医学专业毕业生个人求职信
2013/12/25 职场文书
自我反省检讨书
2014/01/23 职场文书
艾滋病宣传标语
2014/06/25 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL
SpringRetry重试框架的具体使用
2021/07/25 Java/Android