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 相关文章推荐
YII路径的用法总结
Jul 09 PHP
php中使用url传递数组的方法
Feb 11 PHP
Yii2实现ajax上传图片插件用法
Apr 28 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
Jun 05 PHP
PHP微信开发之有道翻译
Jun 23 PHP
PHP中list方法用法示例
Dec 01 PHP
PHP中trait使用方法详细介绍
May 21 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
Aug 11 PHP
Docker搭建自己的PHP开发环境
Feb 24 PHP
关于php unset对json_encode的影响详解
Nov 14 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 PHP
php正则表达式使用方法整理集合
Jan 31 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实用小技巧之调用录像的方法
Dec 05 #PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 #PHP
You might like
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
js模拟滚动条(横向竖向)
2013/02/22 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
学习React中ref的两个demo示例
2018/08/14 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
JS实现无限轮播无倒退效果
2020/09/21 Javascript
[00:34]DOTA2上海特级锦标赛 Spirit战队宣传片
2016/03/04 DOTA
Python常用列表数据结构小结
2014/08/06 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
django使用LDAP验证的方法示例
2018/12/10 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
2020/05/23 Python
html5中valid、invalid、required的定义
2014/02/21 HTML / CSS
日本土著品牌,综合型购物网站:Cecile
2016/08/23 全球购物
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
美国糖果店:Sugarfina
2019/02/21 全球购物
罗马尼亚购物网站:Vivantis.ro
2019/07/20 全球购物
保加利亚运动鞋购物网站:SneakerStudio.bg
2020/12/23 全球购物
linux面试题参考答案(6)
2016/06/23 面试题
北体毕业生求职信
2014/02/28 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
教师年度个人总结
2015/02/11 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
六年级作文之家庭作文
2019/12/12 职场文书
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
vue判断按钮是否可以点击
2022/04/09 Vue.js