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 相关文章推荐
模拟xcopy的函数
Oct 09 PHP
一个SQL管理员的web接口
Oct 09 PHP
php 获取一个月第一天与最后一天的代码
May 16 PHP
php遍历所有文件及文件夹的方法深入解析
Jun 08 PHP
解析CI的AJAX分页 另类实现方法
Jun 27 PHP
php使用Jpgraph绘制3D饼状图的方法
Jun 10 PHP
微信公众平台开发之配置与请求
Aug 26 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
PHP执行shell脚本运行程序不产生core文件的方法
Dec 28 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
php apache开启跨域模式过程详解
Jul 08 PHP
php实现对短信验证码发送次数的限制实例讲解
Mar 04 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
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
JSQL 基于客户端的成绩统计实现方法
2010/05/05 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
2013/09/29 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
微信小程序 label 组件详解及简单实例
2017/01/10 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
javascript帧动画(实例讲解)
2017/09/02 Javascript
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
2018/11/08 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
layui 弹出层值回传解决方式
2019/11/14 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
python paramiko实现ssh远程访问的方法
2013/12/03 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
python实现简单图书管理系统
2019/11/22 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
波兰购物网站:MALL.PL
2019/05/01 全球购物
EJB的激活机制
2013/10/25 面试题
反四风对照检查材料思想汇报
2014/09/16 职场文书
交通安全横幅标语
2014/10/07 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
政风行风整改方案
2014/10/25 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
Vue和Flask通信的实现
2021/05/19 Vue.js