thinkphp 的ADSL内部函数


ThinkPHP为一些常用的操作定义了快捷方法,这些方法具有单字母的方法名,具有比较容易记忆的特点。非常有意思的是,这些快捷方法的字母包含了ADSL字母,所以我们称之为ADSL方法---引自Thinkphp

首先A、D、S、L、C、F、I 他们都在 /THINKPHP/Common/functions.php这个文件中
下面我分别说明一下他们的功能,也可以参照手册,看源代码,资料比较多。


A() 加载Action类
D() 加载Model类                     
M() 加载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.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的记录



3.S快速操作缓存方法
ThinkPHP把各种缓存方式都抽象成统一的缓存类来调用,而且ThinkPHP把所有的缓存机制统一成一个S方法来进行操作,所以在使用
不同的缓存方式的时候并不需要关注具体的缓存细节。如:
S('data'$Data); //使用data标识缓存$Data数据
S('data'$Data3600); //缓存$Data数据3600秒
$Data = S('data'); //猎取缓存数据 
S('name'null); // 删除缓存标识name

4.L快速操作语言变量
L方法提供了多语言的支持,可以快速设置和猎取语言定义。
L(‘USER_INFO’’用户信息’);//设置名称为USER_INFO 的语言变量
L(‘USER_INFO’); //猎取USER_INFO的语言变量值

//批量赋值
$array
[‘USER_INFO’] =‘用户信息’;

$array[‘ERROR_INFO’] =‘错误信息’; 
L($array);

5.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'); 

6. F 文件数据保存方法
F方法主要用于项目的文件数据的写入、更改和删除,其工作机理和S方法是类似的,区别在于用途不同,数据保存的目录也不同,而且不能指定缓存方式,因为默认就是文件形式保存数据。
F方法使用了var_export方法,所以只能支持简单数据类型,不支持对象的缓存。


M()和C()
区别一,重点在于数据的验证:
D()和M()的区别主要在于M()方法不需要创建模型类文件(即 ./lib/Model/下面的文件),M()方法不会读取模型类,所以默认情况下自动验证是无效的,但是可以通过动态赋值的方式实现,而D()方法必须有创建模型类(即./lib/Model/ 下面的文件)。
区别二,在于模型命名中trueTableName的区别:
用了$trueTableName后,必须用$test=d(‘test’),表示查询的是test表,如果用的是$test=m(‘test’),那么都表示查询的数据边是think_test。


你可能感兴趣的:(thinkphp,adsl)