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模板引擎SMARTY
Oct 09 PHP
mysql建立外键
Nov 25 PHP
zend optimizer在wamp的基础上安装图文教程
Oct 26 PHP
php教程之phpize使用方法
Feb 12 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
Jun 19 PHP
php socket客户端及服务器端应用实例
Jul 04 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
Jul 02 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
完美解决在ThinkPHP控制器中命名空间的问题
May 05 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
tp5框架的增删改查操作示例
Oct 31 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
在数据量大(超过10万)的情况下
2007/01/15 PHP
一个PHP分页类的代码
2011/05/18 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
如何安装控制器JavaScript生成插件详解
2018/10/21 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
Python多进程机制实例详解
2015/07/02 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
windows下python安装小白入门教程
2018/09/18 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
代码实例讲解python3的编码问题
2019/07/08 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
pycharm设置默认的UTF-8编码模式的方法详解
2020/06/01 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
安全检查与奖惩制度
2014/01/23 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
公路绿化方案
2014/05/12 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
离婚财产分配协议书
2014/10/21 职场文书
提档介绍信范文
2015/10/22 职场文书
护士业务学习心得体会
2016/01/25 职场文书
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL
浅谈Vue的computed计算属性
2022/03/21 Vue.js
Java数据结构之堆(优先队列)
2022/05/20 Java/Android