Yii框架使用魔术方法实现跨文件调用功能示例

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

(0)

相关推荐

  • Yii2实现跨mysql数据库关联查询排序功能代码

    背景:在一个mysql服务器上(注意:两个数据库必须在同一个mysql服务器上)有两个数据库: memory (存储常规数据表) 中有一个 user 表(记录用户信息) memory_stat (存储统计数据表) 中有一个 user_stat (记录用户统计数据) 现在在 user 表生成的 GridView 列表中展示 user_stat 中的统计数据 只需要在User的model类中添加关联 public function getStat() { return $this->hasOne(U

  • Yii编程开发常见调用技巧集锦

    本文实例汇总了Yii编程开发常见调用技巧.分享给大家供大家参考,具体如下: 1. 设置cookie: $cookie = new CHttpCookie('mycookie','this is my cookie'); $cookie->expire = time()+60*60*24*30; //有限期30天 Yii::app()->request->cookies['mycookie']=$cookie; 2. 读取cookie: $cookie = Yii::app()->r

  • Yii框架实现图片上传的方法详解

    本文实例讲述了Yii框架实现图片上传的方法.分享给大家供大家参考,具体如下: 今天在网上看了下有关图片上传的教程,历经挫折才调试好,现在把相关代码及其说明贴出来,以供初次使用的朋友们参考. Model: <?php class Upload extends CActiveRecord { public $image; public static function model($className = __CLASS__) { return $className; } public functio

  • Yii2实现多域名跨域同步登录退出

    在平台开发过程中,项目分为前台(frontend)www.xxx.com和后台(backend) yun.xxx.com两部分,绑定两个域名, 我们知道在没有绑定域名的时候前后台可以同步登录和退出,但是绑定域名后就失效了,原因是session的作用域不同了. 两个域名的session作用域都只限制在了自己的域名上,我们的解决办法是将不同二级域名的作用域都改成顶级域名xxx.com. 在common/config/main.PHP里面增加如下代码: //跨域session域名配置,获取当前主机名

  • Yii学习总结之数据访问对象 (DAO)

    Yii提供了强大的数据库编程支持.Yii数据访问对象(DAO)建立在PHP的数据对象(PDO)extension上,使得在一个单一的统一的接口可以访问不同的数据库管理系统(DBMS).使用Yii的DAO开发的应用程序可以很容易地切换使用不同的数据库管理系统,而不需要修改数据访问代码. 数据访问对象(DAO) 对访问存储在不同数据库管理系统(DBMS)中的数据提供了一个通用的API. 因此,在将底层 DBMS 更换为另一个时,无需修改使用了 DAO 访问数据的代码. Yii DAO 基于 PHP

  • Yii基于数组和对象的Model查询技巧实例详解

    本文实例讲述了Yii基于数组和对象的Model查询技巧.分享给大家供大家参考,具体如下: 对于一个Model Post 有如下的4中查询方法,返回对象或者对象数组. //查找满足指定条件的结果中的第一行 find the first row satisfying the specified condition $post=Post::model()->find($condition,$params); //查找具有指定主键值的那一行 find the row with the specified

  • Yii框架分页实现方法详解

    本文实例讲述了Yii框架分页实现方法.分享给大家供大家参考,具体如下: 下家公司用的框架是yii,这几天看了下相关教程,今儿把分页教程写下,最后把tp的分页也给整合进了yii,因为个人觉得yii分页没有tp用的顺手. 首页,在models目录里创建个Auth.php的模型文件,里面写入 class Auth extends CActiveRecord { public static function model($className = __CLASS__) { return parent::m

  • Yii2下session跨域名共存的解决方案

    前面谈过session相关配置,在开发的时候,常需要跨域共用session的是登录模块,我相信很多开发的朋友的都遇到过,只需要一个地方登录,相关联的网站也是处于登录状态.两种情况:一种9streets.cn和a.9streets.cn之间,另一种是a.com b.com之间,这几天总结了一下处理方法. 无论是一二级域名,和不同域名下的跨域,无非要达到两点: 客户端访问同一个sessionId, 所有域名对应的服务器访问的session的数据的位置必须一致. 1.访问共同的sessionId主要是

  • Yii框架实现的验证码、登录及退出功能示例

    本文实例讲述了Yii框架实现的验证码.登录及退出功能.分享给大家供大家参考,具体如下: 捣鼓了一下午,总算走通了,下面贴出代码. Model <?php class Auth extends CActiveRecord { public static function model($className = __CLASS__) { return parent::model($className); } public function tableName() { return '{{auth}}'

  • Yii框架使用魔术方法实现跨文件调用功能示例

    本文实例讲述了Yii框架使用魔术方法实现跨文件调用.分享给大家供大家参考,具体如下: 目前项目用yii框架,controller调用facade的方法,facade调用adapter的方法,adapter调用api的方法,api封装了sql方法,但是大部分情况下,只是单纯的调用,但限于目前项目的规则,都要写方法,而方法都是单纯的return,于是写了个demo,模拟了下. <?php class aApi { public static function tt1($name, $age) { p

  • Yii框架学习笔记之session与cookie简单操作示例

    本文实例讲述了Yii框架学习笔记之session与cookie操作.分享给大家供大家参考,具体如下: session操作 <?php namespace app\controllers; use yii\web\Controller; class HelloController extends Controller{ public function actionIndex(){ //把session当做对象 $session = \yii:$app->session; if($session-

  • ThinkPHP框架实现用户信息查询更新及删除功能示例

    本文实例讲述了ThinkPHP框架实现用户信息查询更新及删除功能.分享给大家供大家参考,具体如下: 一 代码 1.配置文件 <?php return array( 'APP_DEBUG' => false, // 关闭调试模式 'DB_TYPE'=> 'mysql', // 数据库类型 'DB_HOST'=> 'localhost', // 数据库服务器地址 'DB_NAME'=>'db_database30', // 数据库名称 'DB_USER'=>'root',

  • Yii2.0框架实现带分页的多条件搜索功能示例

    本文实例讲述了Yii2.0框架实现带分页的多条件搜索功能.分享给大家供大家参考,具体如下: 方法一 在控制器中 public function actionShow(){ $where['title']=Yii::$app->request->get('title'); $where['content']=Yii::$app->request->get('content'); $query=new Query(); $query->from('votes'); // vote

  • C#使用FileSystemWatcher控件实现的文件监控功能示例

    本文实例讲述了C#使用FileSystemWatcher控件实现的文件监控功能.分享给大家供大家参考,具体如下: FileSystemWatcher 可以使用FileSystemWatcher组件监视文件系统,并对文件系统的改变作出反应.通过使用FileSystemWatcher组件,在特定的文件或目录被创建.修改或删除时,可以快速和便捷地启动业务流程. 例如,如果一组用户在合作处理一个存储在服务器共享目录下的文档时,可以使用FileSystemWatcher组件编写应用程序来监视对共享目录的更

  • C#使用dir命令实现文件搜索功能示例

    本文实例讲述了C#使用dir命令实现文件搜索功能.分享给大家供大家参考,具体如下: 以往,我都是使用 System.IO.Directory.GetDirectories() 和 System.IO.Directory.GetFiles() 方法遍历目录搜索文件.但实际的执行效果始终差强人意,在检索多种类型文件方面不够强大,尤其是在检索特殊文件夹或遇到权限不足时会引发程序异常. 这次为朋友写了个检索图片的小程序,在仔细研究了 Process 以及 ProcessStartInfo 之后,决定利用

  • PHP实现的数组和XML文件相互转换功能示例

    本文实例讲述了PHP实现的数组和XML文件相互转换功能.分享给大家供大家参考,具体如下: 最近搞微信支付,微信服务器返回的都是XML文件,所以需要转换成数组,才会便于操作,好了话不多说,直接上代码: 1. XML转数组 /** * 将xml转为array * @param string $xml xml字符串或者xml文件名 * @param bool $isfile 传入的是否是xml文件名 * @return array 转换得到的数组 */ function xmlToArray($xml

  • 纯JS实现的读取excel文件内容功能示例【支持所有浏览器】

    本文实例讲述了纯JS实现的读取excel文件内容功能.分享给大家供大家参考,具体如下: template.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JS-XLSX Live Demo</title> <link href="../css/boots

随机推荐