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 相关文章推荐
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
Apr 18 PHP
PHP Smarty生成EXCEL文档的代码
Aug 23 PHP
php header Content-Type类型小结
Jul 03 PHP
配置php网页显示各种语法错误
Sep 23 PHP
PHP中spl_autoload_register函数的用法总结
Nov 07 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
Jan 04 PHP
PHP编程基本语法快速入门手册
Jan 07 PHP
php基于PDO连接MSSQL示例DEMO
Jul 13 PHP
php 自定义错误日志实例详解
Nov 12 PHP
php实现给二维数组中所有一维数组添加值的方法
Feb 04 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
Oct 24 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之第一天
2006/10/09 PHP
收藏的一个php小偷的核心程序
2007/04/09 PHP
PHP原理之异常机制深入分析
2010/08/08 PHP
php自动注册登录验证机制实现代码
2011/12/20 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
PHP函数func_num_args用法实例分析
2015/12/07 PHP
PHP实现获取url地址中顶级域名的方法示例
2019/06/05 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
JQuery从头学起第一讲
2010/07/04 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
JavaScript学习教程之cookie与webstorage
2019/06/23 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
Python内置函数—vars的具体使用方法
2017/12/04 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
浅谈Python_Openpyxl使用(最全总结)
2019/09/05 Python
MUGLER官方网站:蒂埃里·穆勒香水
2019/11/26 全球购物
护士自荐信
2013/10/25 职场文书
信息工程学院毕业生推荐信
2013/11/05 职场文书
公司部门司机岗位职责
2014/01/03 职场文书
对孩子的寄语
2014/04/09 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
村党支部换届选举方案
2014/05/02 职场文书
社区重阳节活动总结
2015/03/24 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
Python的这些库,你知道多少?
2021/06/09 Python
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫