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执行速度全攻略
Oct 09 PHP
PHP时间戳 strtotime()使用方法和技巧
Oct 29 PHP
php实现猴子选大王问题算法实例
Apr 20 PHP
浅谈PHP中JSON数据操作
Jul 01 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
Jun 13 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
Nov 10 PHP
[原创]php实现 data url的图片生成与保存
Dec 04 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
Dec 15 PHP
thinkphp关于简单的权限判定方法
Apr 03 PHP
PHP实现重载的常用方法实例详解
Oct 18 PHP
PHP连接MySQL数据库并以json格式输出
May 21 PHP
phpcmsv9.0任意文件上传漏洞解析
Oct 20 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
一个简单的网页密码登陆php代码
2012/07/17 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
什么是JavaScript
2009/08/13 Javascript
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
Django 前后台的数据传递的方法
2017/08/08 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
Django进阶之CSRF的解决
2018/08/01 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
Python定义一个Actor任务
2020/07/29 Python
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
实习老师个人总结的自我评价
2013/09/28 职场文书
高中体育教学反思
2014/01/24 职场文书
企业新年寄语
2014/04/04 职场文书
贷款担保申请书
2014/05/20 职场文书
武当山导游词
2015/02/03 职场文书
售票员岗位职责
2015/02/15 职场文书
保送生自荐信范文
2015/03/26 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
Python中使用subprocess库创建附加进程
2021/05/11 Python
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python