ThinkPHP之A方法实例讲解

ThinkPHP的A方法用于在内部实例化控制器,其调用格式为:

A('[项目://][分组/]模块','控制器层名称')

最简单的用法:

$User = A('User');

表示实例化当前项目的UserAction控制器(这个控制器对应的文件位于Lib/Action/UserAction.class.php),如果采用了分组模式,并且要实例化另外一个Admin分组的控制器可以用:

$User = A('Admin/User');

也支持跨项目实例化(项目的目录要保持同级)

$User = A('Admin://User');

表示实例化Admin项目下面的UserAction控制器

ThinkPHP的3.1版本增加了分层控制器的支持,所以还可以用A方法实例化其他的控制器,例如:

$User = A('User','Event);

实例化UserEvent控制器(对应的文件位于Lib/Event/UserEvent.class.php)。
实例化控制器后,就可以调用该控制器中的方法,不过需要注意的情况是,在跨项目调用的情况下,如果你的操作方法 有针对当前控制器的特殊变量操作,会有一些未知的问题,所以,一般来说,官方建议需要公共调用的控制器层单独开发,不要有太多的依赖关系。

(0)

相关推荐

  • 采用ThinkPHP中F方法实现快速缓存实例

    一般使用文件方式的缓存就能够满足要求,而thinkPHP还提供了一个专门用于文件方式的快速缓存方法F方法.由于采用的是PHP返回方式,所以其效率较S方法较高. F方法具有如下特点: 1.简单数据缓存:2.文件形式保存:3.采用PHP返回数据方式加载缓存:4.支持子目录缓存以及自动创建:5.支持删除缓存和批量删除: 复制代码 代码如下: $path="../Public/Runtime/";$str="fastrunaaaaaaaaaaaaaaaa";F("

  • ThinkPHP之M方法实例详解

    M方法用于实例化一个基础模型类,和D方法的区别在于: 1.不需要自定义模型类,减少IO加载,性能较好: 2.实例化后只能调用基础模型类(默认是Model类)中的方法: 3.可以在实例化的时候指定表前缀.数据库和数据库的连接信息: D方法的强大则体现在你封装的自定义模型类有多强,不过随着新版ThinkPHP框架的基础模型类的功能越来越强大,M方法也比D方法越来越实用了. M方法的调用格式: M('[基础模型名:]模型名','数据表前缀','数据库连接信息') 我们来看下M方法具体有哪些用法: 1.

  • ThinkPHP3.1之D方法实例详解

    D方法应该是用的比较多的方法了,用于实例化自定义模型类,是ThinkPHP框架对Model类实例化的一种封装,并实现了单例模式,支持跨项目和分组调用,调用格式如下: D('[项目://][分组/]模型','模型层名称') 方法的返回值是实例化的模型对象. D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化Model基类,同时对于已实例化过的模型,不会重复去实例化. D方法最常用的用法就是实例化当前项目的某个自定义模型,例如: // 实例化User模型

  • ThinkPHP之R方法实例详解

    ThinkPHP的R方法用于调用某个控制器的操作方法,是A方法的进一步增强和补充. R方法的调用格式: R('[项目://][分组/]模块/操作','参数','控制器层名称') 例如,我们定义了一个操作方法为: class UserAction extends Action { public function detail($id){ return M('User')->find($id); } } 那么就可以通过R方法在其他控制器里面调用这个操作方法(一般R方法用于跨模块调用) $data =

  • ThinkPHP单字母函数(快捷方法)使用总结

    在ThinkPHP中有许多使用简便的单字母函数(即快捷方法),可以很方便开发者快速的调用,但是字母函数却不方便记忆,本文将所有的字母函数总结一下,以方便以后查找. 1.U() URL组装 支持不同URL模式 U($url='',$vars='',$suffix=true,$domain=false) @param string $url URL表达式,格式:'[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...'   @param string|array $vars 传入的参数

  • ThinkPHP3.1新特性之G方法的使用

    长期以来ThinkPHP都是需要通过debug_start.debug_end方法甚至Debug类才能完成那些调试的功能,而在ThinkPHP3.1版本中,这些复杂的功能被一个简单的G方法取代了,这不可不谓是一次华丽升级. G方法的作用包括标记位置和区间统计两个功能,下面来看下具体用法: 1.标记位置 G方法的第一个用法就是标记位置,例如: G('begin'); 表示把当前位置标记为begin标签,并且记录当前位置的执行时间,如果环境支持的话,还能记录内存占用情况.可以在任何位置调用G方法标记

  • ThinkPHP之N方法实例详解

    ThinkPHP的N方法属于计数器方法,被用于核心的查询.缓存统计的计数和统计.但是其实可以用于应用的其他计数用途,用法比较简单,调用格式: N('计数位置'[,'步进值']) 例如,我们要统计页面中的查询次数,可以用 N('read',1); 表示每次执行到该位置都会引起计数器加1,到页面结束之前,我们就可以用 $count = N('read'); 来统计当前页面执行的查询数目. 如果你希望计数器每次增加5,那么可以改变步进值,例如: N('score',5); 需要注意的是,N方法页面执行

  • ThinkPHP的I方法使用详解

    ThinkPHP的I方法是众多单字母函数中的新成员,其命名来自于英文Input(输入),主要用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下: I('变量类型.变量名',['默认值'],['过滤方法']) 变量类型是指请求方式或者输入类型. 各个变量类型的含义如下: 变量类型 含义 get 获取GET参数 post 获取POST参数 param 自动判断请求类型获取GET.POST或者PUT参数 request 获取REQUEST 参数 put 获取PUT 参数 sessio

  • ThinkPHP中U方法的使用浅析

    thinkPHP中U方法的定义规则如下(方括号内参数根据实际应用决定): U('[项目://][路由@][分组名-模块/]操作? 参数1=值1[&参数N=值N]')或者用数组的方式传入参数:U('[项目://][路由@][分组名-模块/]操作',array('参数1'=>'值1' [,'参数N'=>'值N'])) 如果不定义项目和模块的话 就表示当前项目和模块名称,下面是一些简单的例子: U('Myapp://User/add') // 生成Myapp项目的User模块的add操作的U

  • ThinkPHP的L方法使用简介

    thinkPHP的L方法用于启用多语言的情况下,设置和获取当前的语言定义. 其调用格式为:L('语言变量'[,'语言值']) 1.设置语言变量 除了使用语言包定义语言变量之外,我们可以用L方法动态设置语言变量,例如: L('LANG_VAR','语言定义'); 语言定义不区分大小写,所以下面也是等效的: L('lang_var','语言定义'); 不过规范起见,我们建议统一采用大写定义语言变量. L方法支持批量设置语言变量,例如: $lang['lang_var1'] = '语言定义1'; $l

  • thinkphp的c方法使用示例

    1.C方法的作用 a. 加载设置用户的配置,保存在一个C函数内的静态变量$_config 中 b. 读取用户的配置 (从$_congig 中读取) 2. 需求分析: 1.设置变量 1.二维数组 复制代码 代码如下: C(array('DB_PASSWORD'=>'root','DB_USERNAME'=>'root'),'DB'); C('DB.USER_NAME','XIAOCHEN); 2.一维数组 复制代码 代码如下: C('USER_NAME','小陈'); C(array('USER

  • 改写ThinkPHP的U方法使其路由下分页正常

    ThinkPHP3.1.3在启用路由的情况下,其分页地址不是路由的地址,由于thinkphp3.2.1的代码也没有修复,很多人都遇到了这一问题,本文采纳olcms的修改方法解决这一问题,特别感谢phper jack对此做出的贡献,具体解决办法是修改ThinkPHP的functions.php的U方法,在287行左右: if(!empty($vars)) { // 添加参数 foreach ($vars as $var => $val){ if('' !== trim($val)) $url .=

随机推荐