A方法用于在内部实例化控制器,调用格式:A(‘[项目://][分组/]模块','控制器层名称')
最简单的用法:
复制代码 代码如下:
$User = A('User');
表示实例化当前项目的UserAction控制器(这个控制器对应的文件位于Lib/Action/UserAction.class.),如果采用了分组模式,并且要实例化另外一个Admin分组的控制器可以用:
复制代码 代码如下:
$User = A('Admin/User');
也支持跨项目实例化(项目的目录要保持同级)
复制代码 代码如下:
$User = A('Admin://User');
表示实例化Admin项目下面的UserAction控制器
.1版本增加了分层控制器的支持,所以还可以用A方法实例化其他的控制器,例如:
复制代码 代码如下:
$User = A('User','Event);
实例化UserEvent控制器(对应的文件位于Lib/Event/UserEvent.class.)。
实例化控制器后,就可以调用该控制器中的方法,不过需要注意的情况是,在跨项目调用的情况下,如果你的操作方法 有针对当前控制器的特殊变量操作,会有一些未知的问题,所以,一般来说,官方建议需要公共调用的控制器层单独开发,不要有太多的依赖关系。
B方法
这是随着行为应运而生的新生函数,可以执行某个行为,例如
复制代码 代码如下:
B('app_begin');
就是在项目开始之前,执行这个行为定义的所有函数。支持2个参数,第二个参数支持需要接受一个数组,例如
复制代码 代码如下:
B('app_begin',array("name"=& gt;"tdweb","time"=>time()));
C方法
C方法是Think用于设置、获取,以及保存配置参数的方法,使用频率较高。
了解C方法需要首先了解下Think的配置,因为C方法的所有操作都是围绕配置相关的。Think的配置文件采用数组格式定义。
由于采用了函数重载设计,所以用法较多,我们来一一说明下。
设置参数
复制代码 代码如下:
C('DB_NAME','think');
表示设置DB_NAME配置参数的值为think,由于配置参数不区分大小写,所以下面的写法也是一样:
复制代码 代码如下:
C('db_name','think');
但是建议保持统一大写的配置定义规范。
项目的所有参数在未生效之前都可以通过该方法动态改变配置,最后设置的值会覆盖前面设置或者惯例配置里面的定义,也可以使用参数配置方法添加新的配置。
支持二级配置参数的设置,例如:
复制代码 代码如下:
C('USER.USER_ID',8);
配置参数不建议超过二级。
如果要设置多个参数,可以使用批量设置,例如:
复制代码 代码如下:
$config['user_id'] = 1;
$config['user_type'] = 1;
C($config);
如果C方法的第一个参数传入数组,就表示批量赋值,上面的赋值相当于:
复制代码 代码如下:
C('USER_ID',1);
C('USER_TYPE',1);
获取参数
要获取设置的参数,可以用:
复制代码 代码如下:
$userId = C('USER_ID');
$userType = C('USER_TYPE');
如果USER_ID参数尚未定义过,则返回NULL。
也可以支持获取二级配置参数,例如:
复制代码 代码如下:
$userId = C('USER.USER_ID');
如果传入的配置参数为空,表示获取全部的参数:
复制代码 代码如下:
$config = C();
保存设置
.1版本增加了一个永久保存设置参数的功能,仅针对批量赋值的情况,例如:
复制代码 代码如下:
$config['user_id'] = 1;
$config['user_type'] = 1;
C($config,'name');
在批量设置了config参数后,会连同当前所有的配置参数保存到缓存文件(或者其他配置的缓存方式)。
保存之后,如果要取回保存的参数,可以用
复制代码 代码如下:
$config = C('','name');
其中name就是前面保存参数时用的缓存的标识,必须一致才能正确取回保存的参数。取回的参数会和当前的配置参数合并,无需手动合并。
D方法
D方法应该是用的比较多的方法了,用于实例化自定义模型类,是Think框架对Model类实例化的一种封装,并实现了单例模式,支持跨项目和分组调用,调用格式如下:
D(‘[项目://][分组/]模型','模型层名称')
方法的返回值是实例化的模型对象。
D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化Model基类,同时对于已实例化过的模型,不会重复去实例化。
D方法最常用的用法就是实例化当前项目的某个自定义模型,例如:
复制代码 代码如下: