Yii框架使用魔术方法实现跨文件调用功能示例


Posted in PHP onMay 20, 2017

本文实例讲述了Yii框架使用魔术方法实现跨文件调用。分享给大家供大家参考,具体如下:

目前项目用yii框架,controller调用facade的方法,facade调用adapter的方法,adapter调用api的方法,api封装了sql方法,但是大部分情况下,只是单纯的调用,但限于目前项目的规则,都要写方法,而方法都是单纯的return,于是写了个demo,模拟了下。

<?php
class aApi
{
  public static function tt1($name, $age)
  {
    print_r($name);
    echo $age;
  }
}
class aAdapter
{
  public function __call($func, $params)
  {
    $class = substr(get_called_class(), 0, -7) . 'Api';
    return call_user_func_array(array($class, $func), $params);
  }
}
class aFacade
{
  public static function __callstatic($func, $params)
  {
    // 这里也可以用debug_backtrace()
    $class = substr(get_called_class(), 0, -6) . 'Adapter';
    $obj = new $class();
    return call_user_func_array(array($obj, $func), $params);
  }
}
class aController
{
  public function actionC()
  {
    aFacade::tt1(['name'], 'age');
  }
}
$a = new aController;
$a->actionC();

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php pack与unpack 摸板字符字符含义
Oct 29 PHP
ajax+php打造进度条代码[readyState各状态说明]
Apr 12 PHP
解析dedecms空间迁移步骤详解
May 15 PHP
php class中public,private,protected的区别以及实例分析
Jun 18 PHP
PHP时间格式控制符对照表分享
Jul 23 PHP
PHP callback函数使用方法和注意事项
Jan 23 PHP
用PHP生成excel文件到指定目录
Jun 22 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
Mar 07 PHP
PHP GD库相关图像生成和处理函数小结
Sep 30 PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
Apr 07 PHP
Yii框架实现的验证码、登录及退出功能示例
May 20 #PHP
利用Laravel事件系统如何实现登录日志的记录详解
May 20 #PHP
Yii框架实现图片上传的方法详解
May 20 #PHP
Yii框架分页实现方法详解
May 20 #PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 #PHP
yii2项目实战之restful api授权验证详解
May 20 #PHP
ThinkPHP下表单令牌错误与解决方法分析
May 20 #PHP
You might like
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
top.location.href 没有权限 解决方法
2008/08/05 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
javascript制作2048游戏
2015/03/30 Javascript
Javascript中神奇的this
2016/01/20 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
基于Vue的ajax公共方法(详解)
2018/01/20 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
Python 类与元类的深度挖掘 II【经验】
2016/05/06 Python
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
Python实现的端口扫描功能示例
2018/04/08 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
.dcm格式文件软件读取及python处理详解
2020/01/16 Python
python3.7调试的实例方法
2020/07/21 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
实体的生命周期
2013/08/31 面试题
应届生骨科医生求职信
2013/10/31 职场文书
市场营销专业毕业生自荐信
2013/11/02 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
毕业横幅标语
2014/10/08 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
Redis三种集群模式详解
2021/10/05 Redis
Python实现提取PDF简历信息并存入Excel
2022/04/02 Python