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中使用Oracle数据库(6)
Oct 09 PHP
JS中encodeURIComponent函数用php解码的代码
Mar 01 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 PHP
深入理解php的MySQL连接类
Jun 07 PHP
关于JSON以及JSON在PHP中的应用技巧
Nov 27 PHP
推荐25款php中非常有用的类库
Sep 29 PHP
Laravel 5框架学习之表单
Apr 08 PHP
PHP yii实现model添加默认值的方法(两种方法)
Nov 10 PHP
PHP 断点续传实例详解
Nov 11 PHP
php实现获取近几日、月时间示例
Jul 06 PHP
php文件包含的几种方式总结
Sep 19 PHP
禁止直接访问php文件代码分享
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正则的Unknown Modifier错误解决方法
2010/03/02 PHP
基于PHPExcel的常用方法总结
2013/06/13 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
PHP往XML中添加节点的方法
2015/03/12 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
php遍历替换目录下文件指定内容的方法
2016/11/10 PHP
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
2016/08/16 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
nodeJS实现路由功能实例代码
2017/06/08 NodeJs
Vue计算属性的使用
2017/08/04 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
Python wxPython库使用wx.ListBox创建列表框示例
2018/09/03 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
全球独特生活方式产品和礼品购物网站:AHAlife
2018/09/18 全球购物
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
初一家长会邀请函
2014/01/31 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
初中新生军训方案
2014/05/13 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
Java基础-封装和继承
2021/07/02 Java/Android
gojs实现蚂蚁线动画效果
2022/02/18 Javascript
MySQL存储过程及语法详解
2022/08/05 MySQL