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 相关文章推荐
如何分别全角和半角以避免乱码
Oct 09 PHP
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
Oct 09 PHP
php 日期和时间的处理-郑阿奇(续)
Jul 04 PHP
解析PHP中intval()等int转换时的意外异常情况
Jun 21 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
Jun 30 PHP
浅谈PHP接收POST数据方式
Jun 05 PHP
YiiFramework入门知识点总结(图文教程)
Dec 28 PHP
php文件类型MIME对照表(比较全)
Oct 07 PHP
PHP回调函数简单用法示例
May 08 PHP
PHP常见过waf webshell以及最简单的检测方法
May 21 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
May 29 PHP
PHP与Web页面交互操作实例分析
Jun 02 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 事件机制(2)
2011/03/23 PHP
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
简单的php购物车代码
2020/06/05 PHP
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
JavaScript获取页面中第一个锚定文本的方法
2015/04/03 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
jquery ztree实现模糊搜索功能
2016/02/25 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
微信小程序和百度的语音识别接口详解
2019/05/06 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
微信小程序在text文本实现多种字体样式
2019/11/08 Javascript
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
让python在hadoop上跑起来
2016/01/27 Python
python获取list下标及其值的简单方法
2016/09/12 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
一文带你了解Python中的字符串是什么
2018/11/20 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
基于HTML5的WebSocket的实例代码
2018/08/15 HTML / CSS
老总助理工作岗位职责
2014/02/06 职场文书
工程项目建议书范文
2014/03/12 职场文书
公司请假条格式
2014/04/11 职场文书
法人单位适用的授权委托书
2014/09/19 职场文书
党的群众路线调研报告
2014/11/03 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
2015年党员公开承诺书范文
2015/01/22 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书
详解python字符串驻留技术
2021/05/21 Python
i7 6700处理器相当于i5几代
2022/04/19 数码科技