Thinkphp中的A 函数(Thinkphp3.2.3版本)

A函数是TP中实例化控制器的一个快捷函数,它的语法结构如下:

A(‘模块/控制器‘)
//当控制器层名称不是 Controller 时须这样写
A(‘模块/控制器‘,‘控制器层名称‘)

如果要调用的控制器就在当前模块下,那么也可以按如下语法写:

A(‘控制器‘)
//或者这样
A(‘控制器‘,‘控制器层名称‘)


通常情况下访问控制器的实例化是自动完成的,系统会根据URL地址解析出访问的控制器名称自动实例化,并且调用相关的操作方法。比如我们输入下列URL地址:

http://serverName/Home/Index/index

此时系统会自动实例化 Home/Controller/IndexController.class.php 中的 IndexController 类。但如果你需要跨控制器调用的话必须先实例化才能调用:

//假设当前在Home模块的Index控制器下// 实例化Home模块的User控制器
$User = new \Home\Controller\UserController();
// 实例化Admin模块的Blog控制器
$Blog = new \Admin\Controller\BlogController();

以上代码如果用 A 函数的话可以简化如下:

$User = A(‘User‘); //因为 User 控制器就在当前模块 Home 下,所以模块名称可以省略
$Blog = A(‘Admin/Blog‘);

默认情况下,A方法实例化的是默认控制器层(Controller),如果你要实例化其他的分层控制器的话(比如 Event),可以使用:

// 假设当前模块是Home模块
// 实例化Event控制器
$User = A(‘User‘,‘Event‘);
$Blog = A(‘Admin/Blog‘,‘Event‘);

上面的代码等效于:

// 实例化Home模块的User事件控制器
$User = new \Home\Event\UserEvent();
// 实例化Admin模块的Blog事件控制器
$Blog = new \Admin\Event\BlogEvent();
时间: 2024-08-29 15:30:43

Thinkphp中的A 函数(Thinkphp3.2.3版本)的相关文章

ThinkPHP中的快捷函数小结

U() 制作url地址的快捷函数 C(名称) 获得配置变量(convertion.php config.php)信息C(名称,值) 设置配置变量信息 L() 获得语言变量信息E() 给页面输出错误信息 A("项目://模块/控制器") 实例化控制器对象A("Home/User") 实例化User控制器对象A("book://Home/User") 实例化book项目的Home模块的User控制器对象 R([模块/]控制器标志/操作方法)  实例化

ThinkPHP中I(),U(),$this->post()等函数

在ThinkPHP中在控制器中接受表单的数据可以用 1.$_POST[]/$_GET[],但是这个接受的表单内容不会通过htmlspecialchars();函数进行过滤.如果想使用这个接收数据,需要手动处理表单数据 2.可以用接收表单函数 $this->_post();$this->_get();函数,这个函数默认就会使用htmlspecialchars()进行过滤,不用手动过滤. 3.在thinkphp3.1.3中有一个新的函数I();直接接收表单数据,并默认为htmlspecailcha

Thinkphp模板中使用自定义函数的方法

注意:自定义函数要放在项目应用目录/common/common.php中. 这里是关键. 模板变量的函数调用格式:{$varname|function1|function2=arg1,arg2,### } 说明: { 和 $ 符号之间不能有空格,后面参数的空格就没有问题: ###表示模板变量本身的参数位置 : 支持多个函数,函数之间支持空格 : 支持函数屏蔽功能,在配置文件中可以配置禁止使用的函数列表 : 支持变量缓存功能,重复变量字串不多次解析. 使用例子: {$webTitle|md5|st

关于ThinkPhp中getField方法存在的问题

在ThinkPhp中我们可以通过以下方式获取数据库数据 query:直接执行SQL查询操作 find:查询单选数据集 getField查询字段值 select:查询数据集 其他...... 但今天使用getField方法时查询某些字段时发现返回的结果却是Array类型(正常情况下是数据库中该字段对应的类型) 经过反复测试后又看了ThinkPhp的源码才发现原来getField的第一个参数中如果有字符","那么ThinkPhp会认为你查询的是多个字段,因此返回的结果就是Array类型 而

ThinkPHP中的模型

ThinkPHP中的模型 1.什么是模型(Model) 模型表示企业数据和业务规则,实际项目开发中,主要实现与数据库进行操作. 2.模型的定义规则 模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,然后加上模型类的关键词Model,再加上类文件后缀.class.php 案例:实现移动办公自动化系统的组织结构功能 ① 设计数据库db_think ② 设计数据表结构(tk_dept) id ???? 编号 ????int 自动增长 主键 name 部门名称 varchar(4

ThinkPHP中 按条件查询后列表显示

最近在项目中遇到了需要根据下拉框的条件筛选出符合条件的数据,然后进行列表显示的问题. 在ThinkPHP中进行列表显示的传统过程:通过在后台控制器中查询出数据,然后通过$this->assign()来实现控制器数据向页面的传递,在页面中通过<foreach>或<volist>标签来进行数据的解析,(注:在通过标签进行数据的解析时需要以“$”符号的形式). 在进行条件查询时,需要通过jquery中ajax的方式将条件GET到后台控制器,后台控制器中接收数据,然后根据条件进行查询

ThinkPHP中的__initialize()和类的构造函数__construct()

ThinkPHP中的__initialize()和类的构造函数__construct()网上有很多关于__initialize()的说法和用法,总感觉不对头,所以自己测试了一下.将结果和大家分享.不对请更正.首先,我要说的是1.__initialize()不是php类中的函数,php类的构造函数只有__construct().2.类的初始化:子类如果有自己的构造函数(__construct()),则调用自己的进行初始化,如果没有,则调用父类的构造函数进行自己的初始化.3.当子类和父类都有__co

thinkphp中I(&quot;parm&quot;)用法的注意事项

php中用来传输的方式有两种$_GET 和 $_POST, thinkphp 提供了一种兼容两中传输方式的做法I(“param”) 但是请注意:在使用php中的函数时需要传入参数时不能用I(“parm”),必须使用采用的传输方式$_GET 或 $_POST传入,否则出错 thinkphp中I("parm")用法的注意事项,布布扣,bubuko.com

[转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别

1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法.通俗一点说:M实例化参数是数据库的表名.D实例化的是你自己在Model文件夹下面建立的模型文件 例如:$user = new UserModel(); 等价于$user = D('user'); 如果实例化的是一个空模型 例如 $Demo = new Model(); 那么它等价于