首先A、D、S、L、C、F、I 他们都在 /THINKPHP/Common/functions.php 这个文件中 |
下面我分别说明一下他们的功能 |
A() 加载Action类 |
D() 加载Model类 |
S()全局缓存配置 |
L() 获取语言定义 |
C() 获取配置值 |
F()快速文件数据读取和保存 针对简单类型数据 字符串、数组 |
I( ) 快速创建一个对象实例 |
1.A快速创建Action对象 |
$action = new UserAction(); // 等同于以下写法: |
$action = A( "User" ); |
而且,如果当前的UserAction类还没有引入的话,A方法会自动引入。并且具有单例模式的支持,不会重复创建相同的Action对象。 |
A方法支持跨项目调用,例如: |
$action = A( "User" , 'Admin' ); //实例化Admin项目的UserAction类 |
再例如我们的程序有2个Action分别是IndexAction和TestAction,在 IndexAction中有个myHello方法能够输出hello world,如果我也想在TestAction中也输出同样一段文字怎么办?最原始的方法首先我们导入IndexAction. class .php这个文件,然后 new IndexAction,最后调用myHello方法才行。 |
代码一般为: |
PHP代码 |
<?php |
import( "@.Action.Index" ); |
//导入本项目目录下Action目录下的Index.class.php文件。 |
class TestAction extends Action{ |
public function index() |
{ |
$index = new IndexAction(); //实例化IndexAction |
echo $index ->myHello(); //调用myHello()方法 |
} |
} |
?> |
那么,如果我们用A函数,怎么写呢?PHP代码 |
<?php |
class TestAction extends Action{ |
public function index() |
{ |
$index =A( "Index" ); |
echo $index ->myHello(); |
} |
} |
?> |
呵呵,少写很多代码吧。当然,这还不是最偷懒的方法,请看下边的R()函数,就知道什么是偷懒的极致了。 |
|
2:B函数 |
这是随着行为应运而生的新生函数,可以执行某个行为,例如B( 'app_begin' );就是在项目开始之前,执行这个行为定义的所有函数,支持2个参数,第二个参数支持需要接受一个数组,例如B( 'app_begin' , array ( "name" =& gt; "tdweb" , "time" =>time()));这样。 |
3:C函数 |
获取配置值,这个大家用的应该不少。虽然使用方便,但是C函数无疑是一个非常强大的函数。 |
获取值: |
获取所有设置:C(); 不传递任何参数,返回一个包含所有设置的数组。 |
获取指定配置:C( 'URL_MODEL' ) 这样就能得到URL_MODEL的配置信息 |
获取指定二维数组配置:C( "array.name" ),这样就返回数组 array 下的key为name所对应的值 |
设置值:为二维数组赋值C( "array.name" , "value" ),原理同上(获取 array .name的值),后边的value是值面向 |
批量赋值: |
$test = array ( "URL_MODEL" =>1, "THIN_MODEL" =>true"); |
C( $test ); |
这样直接将数组里的值赋值了 |
判断是否赋值: |
C( "?URL_MODEL" )这样前边加个 "?" ,如果已经赋值,则返回true |
需要说明的是,这里虽然更改了配置的值,但是仅仅是这个页面做了更改,到下个页面就不起作用了,如果想改就永久更改,那么需要配合F函数,将配置文件写入config.php才行。 |
4:D快速创建模型数据对象 |
先定义好模型类,如UserModel,然后就可以用D()函数对数据进行操作了。例如: |
先在 "你的项目" \Lib\Model下建立一个名为UserModel. class .php的PHP脚本,内容如下: |
class UserModel extends Model{} |
然后,无需增加任何属性和方法,就可以进行如下操作: |
$User = D( "User" ); //实例化User对象,User是你在数据库建立的一个名为"前缀_user"的数据表 |
也可以用 $User = new UserModel()代替,进行实例化对象的操作。 |
实例化之后,就可以对数据进行增删查改等一系列操作了,如: |
$User ->find(1); //查找主键为1的记录 |
5.S快速操作缓存方法 |
ThinkPHP把各种缓存方式都抽象成统一的缓存类来调用,而且ThinkPHP把所有的缓存机制统一成一个S方法来进行操作,所以在使用 |
不同的缓存方式的时候并不需要关注具体的缓存细节。如: |
S( 'data' , $Data ); //使用data标识缓存$Data数据 |
S( 'data' , $Data ,3600); //缓存$Data数据3600秒 |
$Data = S( 'data' ); //获取缓存数据 |
S( 'name' ,null); // 删除缓存标识name |
6.L快速操作语言变量 |
L方法提供了多语言的支持,可以快速设置和获取语言定义。 |
L(‘USER_INFO’,’用户信息’); //设置名称为USER_INFO 的语言变量 |
L(‘USER_INFO’); // 获取USER_INFO的语言变量值 |
//批量赋值 |
$array [‘USER_INFO’] = ‘用户信息’; |
$array [‘ERROR_INFO’] = ‘错误信息’; |
L( $array ); |
7.C 快速操作配置变量 |
C(‘USER_AUTH_ON’,true); //设置名称为USER_AUTH_ON 的配置参数 |
C(‘USER_AUTH_ON’); //获取USER_AUTH_ON的变量值 |
同L一样,C也支持批量赋值 |
注意:配置参数不区分大小写 |
此外从1.5版本开始,C方法还支持二维数组的操作 |
C( 'USER.USER_TYPE' ,1); |
C( 'USER.USER_AUTH_ON' ); |
8. F 文件数据保存方法 |
F方法主要用于项目的文件数据的写入、更改和删除,其工作机理和S方法是类似的,区别在于用途不同,数据保存的目录也不同,而且不能指定缓存方式,因为默认就是文件形式保存数据。 |
F方法使用了var_export方法,所以只能支持简单数据类型,不支持对象的缓存 |
|
9:R函数 |
还记得我们的A函数吧,如果仅仅想执行某个方法,其实用R函数更方便,刚才的可以替换成PHP代码 |
<?php |
class TestAction extends Action{ |
public function index() |
{ |
$index =R( "Index" , "myHello" ); |
echo $index ; |
} |
} |
?> |