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 md5下16位和32位的实现代码
Apr 09 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
Feb 22 PHP
php中定义网站根目录的常用方法
Aug 08 PHP
PHP中strtotime函数使用方法详解
Nov 27 PHP
PHP跨时区(UTC时间)应用解决方案
Jan 11 PHP
浅析memcache启动以及telnet命令详解
Jun 28 PHP
php函数指定默认值方法的小例子
Dec 04 PHP
php利用cookies实现购物车的方法
Dec 10 PHP
Web程序工作原理详解
Dec 25 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
Mar 26 PHP
Laravel的throttle中间件失效问题解决方法
Oct 09 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 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下使用iconv需要注意的问题
2010/11/20 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
Vue函数式组件-你值得拥有
2019/05/09 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
python使用any判断一个对象是否为空的方法
2014/11/19 Python
浅谈django中的认证与登录
2016/10/31 Python
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
Python request设置HTTPS代理代码解析
2018/02/12 Python
numpy 计算两个数组重复程度的方法
2018/11/07 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
python根据时间获取周数代码实例
2019/09/30 Python
Python中 Global和Nonlocal的用法详解
2020/01/20 Python
Python处理PDF与CDF实例
2020/02/26 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
红色康乃馨酒店:Red Carnation Hotels
2017/06/22 全球购物
Ado与Ado.net的相同与不同
2014/12/08 面试题
体育教学随笔感言
2014/02/24 职场文书
个人授权委托书模板
2014/09/14 职场文书
本科毕业论文致谢词
2015/05/14 职场文书