ThinkPHP C+F方式

ThinkPHP常用C+F方法进行配置设置于缓存设置

比如常见的 C(F('smtp'),'smtp');表示获取F方法中smtp缓存,设置配置为smtp函数

 

C方法是ThinkPHP用于设置、获取,以及保存配置参数的方法,使用频率较高。
了解C方法需要首先了解下ThinkPHP的配置,因为C方法的所有操作都是围绕配置相关的。ThinkPHP的配置文件采用PHP数组格式定义。
由于采用了函数重载设计,所以用法较多,我们来一一说明下。
设置参数

C('DB_NAME','thinkphp');=C('db_name','thinkphp');

表示设置DB_NAME配置参数的值为thinkphp,配置参数不区分大小写

项目的所有参数在未生效之前都可以通过该方法动态改变配置,最后设置的值会覆盖前面设置或者惯例配置里面的定义,也可以使用参数配置方法添加新的配置。
支持二级配置参数的设置,例如:

  1. C('USER.USER_ID',8);

例如:

//C('action','login');
//dump(C('action'));

模板显示:
{:C("SITENAME")}
 

配置参数不建议超过二级。
如果要设置多个参数,批量设置:

$smtp_server = "abc";
$smtp_port = "25";
$smtp_userName = "aa";
$smtp_password = "aa";

$smtp = array('MAIL_ADDRESS'=>$smtp_address,'MAIL_SMTP'=>$smtp_server,'MAIL_PORT'=>$_POST['port'],'MAIL_LOGINNAME'=>$smtp_userName,'MAIL_PASSWORD'=>$smtp_password,'MAIL_CHARSET'=>'UTF-8','MAIL_AUTH'=>true,'MAIL_HTML'=>true);

C($smtp,'smtp');//

dump(C());可以见到以下输出

["mail_address"] => string(20) "xx"
  ["mail_smtp"] => string(17) "xx"
  ["mail_port"] => NULL
  ["mail_loginname"] => string(20) "abc"
  ["mail_password"] => string(9) "aa"
  ["mail_charset"] => string(5) "aa"
  ["mail_auth"] => bool(true)
  ["mail_html"] => bool(true)

也可以支持获取二级配置参数,例如

  1. $userId = C('USER.USER_ID');

如果传入的配置参数为空,表示获取全部的参数:

  1. $config = C();

保存设置
3.1版本增加了一个永久保存设置参数的功能,仅针对批量赋值的情况,例如:

  1. $config['user_id'] = 1;
  2. $config['user_type'] = 1;
  3. C($config,'name');

在批量设置了config参数后,会连同当前所有的配置参数保存到缓存文件(或者其他配置的缓存方式)。

其中name就是前面保存参数时用的缓存的标识,必须一致才能正确取回保存的参数。取回的参数会和当前的配置参数合并,无需手动合并。

F方法

F方法的特点是:
简单数据缓存;
文件形式保存;
采用PHP返回数据方式加载缓存;
支持子目录缓存以及自动创建;
支持删除缓存和批量删除;

  1. F('data','test data');

默认的保存起始路径是DATA_PATH(该常量在默认配置位于RUNTIME_PATH.'Data/'下面),也就是说会生成文件名为DATA_PATH.'data.php'的缓存文件。
注意:确保你的缓存标识的唯一,避免数据覆盖和冲突。
下次读取缓存数据的时候,使用:

  1. $Data = F('data');
我们可以采用子目录方式保存,例如:
    1. F('user/data',$data); // 缓存写入
    2. F('user/data'); // 读取缓存

删除缓存

删除缓存也很简单,使用:

  1. F('data',NULL); 

第二个参数传入NULL,则表示删除标识为data的数据缓存。
支持批量删除功能,尤其是针对子目录缓存的情况,假设我们要删除user子目录下面的所有缓存数据,可以使用:
F('user/*',NULL);

L方法

  1. L('LANG_VAR','语言定义');
语言定义不区分大小写,所以下面也是等效的 L('lang_var','语言定义');

$lang['lang_var1'] = '语言定义1';
$lang['lang_var2'] = '语言定义2';
$lang['lang_var3'] = '语言定义3';
L($lang);

模板中使用

{$Think.lang.lang_var}

 
posted on 2014-05-16 14:32  yun007  阅读(1768)  评论(0编辑  收藏  举报