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下MAIL的另一解决方案
Oct 09 PHP
?生?D片??C字串
Dec 06 PHP
PHP加密扩展库Mcrypt安装和实例
Nov 10 PHP
使用PHP破解防盗链图片的一个简单方法
Jun 07 PHP
PHP原生函数一定好吗?
Dec 08 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
Aug 04 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
Jan 15 PHP
PHP实现动态获取函数参数的方法示例
Apr 02 PHP
thinkphp5.1框架模板布局与模板继承用法分析
Jul 19 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
Nov 25 PHP
PHP的垃圾回收机制代码实例讲解
Feb 27 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插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
php面试实现反射注入的详细方法
2019/09/30 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
基于jquery的获取mouse坐标插件的实现代码
2010/04/01 Javascript
验证javascript中Object和Function的关系的三段简单代码
2010/06/27 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
js Date概念详细介绍
2013/11/22 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
jQuery中each()方法用法实例
2014/12/27 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
JS在if中的强制类型转换方式
2018/07/15 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
[03:48]大碗DOTA
2019/07/25 DOTA
python3访问sina首页中文的处理方法
2014/02/24 Python
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
Python的Flask框架中的Jinja2模板引擎学习教程
2016/06/30 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
Python docx库用法示例分析
2019/02/16 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
详解CSS3:overflow属性
2020/11/17 HTML / CSS
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
毕业生求职简历中的自我评价
2013/10/18 职场文书
纺织工程专业个人求职信范文
2014/01/27 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
2014年销售工作总结范文
2014/12/01 职场文书
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL