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 相关文章推荐
基于mysql的bbs设计(一)
Oct 09 PHP
解决GD中文乱码问题
Feb 14 PHP
Mysql中limit的用法方法详解与注意事项
Apr 19 PHP
PHP 图像尺寸调整代码
May 26 PHP
php 数组使用详解 推荐
Jun 02 PHP
Array of country list in PHP with Zend Framework
Oct 17 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
Jul 01 PHP
详解WordPress开发中get_header()获取头部函数的用法
Jan 08 PHP
php bootstrap实现简单登录
Mar 08 PHP
PHP Oauth授权和本地加密实现方法
Aug 12 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 PHP
PHP实现打包zip并下载功能
Jun 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实用小技巧之调用录像的方法
Dec 05 #PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 #PHP
You might like
关于手调机和数调机的选择
2021/03/02 无线电
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
JavaScript中的冒泡排序法
2016/08/03 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
2020/12/31 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
vue favicon设置以及动态修改favicon的方法
2018/12/21 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
跟老齐学Python之正规地说一句话
2014/09/28 Python
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
判断网页编码的方法python版
2016/08/12 Python
python 线程的暂停, 恢复, 退出详解及实例
2016/12/06 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
Python json转字典字符方法实例解析
2020/04/13 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
Python创建自己的加密货币的示例
2021/03/01 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
奖学金自我鉴定范文
2013/10/03 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书