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 读取文件的正确方法
Apr 29 PHP
php采集时被封ip的解决方法
Aug 29 PHP
php调用mysql数据 dbclass类
May 07 PHP
PHP 关于访问控制的和运算符优先级介绍
Jul 08 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
Apr 08 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
Mar 18 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
Mar 21 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 PHP
php 多继承的几种常见实现方法示例
Nov 18 PHP
PHP实现随机发扑克牌
Apr 22 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 09 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 中的str_replace 函数总结
2007/04/27 PHP
PHP编程函数安全篇
2013/01/08 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
Javascript UrlDecode函数代码
2010/01/09 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
OpenLayers3实现对地图的基本操作
2020/09/28 Javascript
vue实现简易的双向数据绑定
2020/12/29 Vue.js
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
python生成器generator用法实例分析
2015/06/04 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
python实现简单神经网络算法
2018/03/10 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
购买200个世界上最好的内衣品牌:Bare Necessities
2017/02/11 全球购物
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
德国童装购物网站:NICKI´S.com
2018/04/20 全球购物
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
会计实习自我鉴定
2013/12/04 职场文书
中学生运动会入场词
2014/02/12 职场文书
安全目标管理责任书
2014/07/25 职场文书
机关单位工作失职检讨书
2014/11/20 职场文书
优秀班干部主要事迹材料
2015/11/04 职场文书