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面向对象全攻略 (十四) php5接口技术
Sep 30 PHP
php 操作调试的方法
Jul 12 PHP
php获取本地图片文件并生成xml文件输出具体思路
Apr 27 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
Aug 21 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
Nov 29 PHP
php轻量级的性能分析工具xhprof的安装使用
Aug 12 PHP
php对文件夹进行相关操作(遍历、计算大小)
Nov 04 PHP
深入解析PHP的Yii框架中的event事件机制
Mar 17 PHP
PHP实现的同步推荐操作API接口案例分析
Nov 30 PHP
php解析非标准json、非规范json的方式实例
Dec 10 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
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
javascript实现json页面分页实例代码
2014/02/20 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
2020/06/19 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
微信小程序解除10个请求并发限制
2018/12/18 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
JavaScript代码简化技巧实例解析
2020/09/09 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
圣彼得堡鲜花配送:Semicvetic
2020/09/15 全球购物
通信工程专业毕业生推荐信
2013/12/25 职场文书
周年庆典邀请函范文
2014/01/23 职场文书
关于环保的标语
2014/06/13 职场文书
琅琊山导游词
2015/02/05 职场文书