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 Try Catch异常测试
Mar 01 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
Nov 07 PHP
php获取文件内容最后一行示例
Jan 09 PHP
PHPThumb图片处理实例
May 03 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
PHP文件上传判断file是否己选择上传文件的方法
Nov 10 PHP
php中数据库连接方式pdo和mysqli对比分析
Feb 25 PHP
Laravel路由设定和子路由设定实例分析
Mar 30 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 PHP
php基于Redis消息队列实现的消息推送的方法
Nov 28 PHP
PHP fprintf()函数用法讲解
Feb 16 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
May 05 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+ajax导入大数据时产生的问题处理
2014/06/11 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
php获取微信openid方法总结
2019/10/10 PHP
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
Django中使用group_by的方法
2015/05/26 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
解读! Python在人工智能中的作用
2017/11/14 Python
Python读取word文本操作详解
2018/01/22 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
2019/07/04 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
10条PHP编程习惯
2014/05/26 面试题
师范应届生语文教师求职信
2013/10/29 职场文书
物流业务员岗位职责
2014/02/08 职场文书
新春联欢会主持词
2014/03/24 职场文书
公证委托书模板
2014/04/03 职场文书
企业安全生产责任书
2014/04/14 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
总经理司机岗位职责
2015/04/10 职场文书