欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

ThinkPHP函数详解:C方法

C方法是ThinkPHP用于设置、获取,以及保存配置参数的方法,使用频率较高。

了解C方法需要首先了解下ThinkPHP的配置,因为C方法的所有操作都是围绕配置相关的。ThinkPHP的配置文件采用PHP数组格式定义。
由于采用了函数重载设计,所以用法较多,我们来一一说明下。
设置参数 
C('DB_NAME','thinkphp');
表示设置DB_NAME配置参数的值为thinkphp,由于配置参数不区分大小写,所以下面的写法也是一样:
C('db_name','thinkphp');
但是建议保持统一大写的配置定义规范。
项目的所有参数在未生效之前都可以通过该方法动态改变配置,最后设置的值会覆盖前面设置或者惯例配置里面的定义,也可以使用参数配置方法添加新的配置。
支持二级配置参数的设置,例如:
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();

保存设置 
3.1版本增加了一个永久保存设置参数的功能,仅针对批量赋值的情况,例如:
$config['user_id'] = 1;
$config['user_type'] = 1;
C($config,'name');
在批量设置了config参数后,会连同当前所有的配置参数保存到缓存文件(或者其他配置的缓存方式)。
保存之后,如果要取回保存的参数,可以用
$config = C('','name');
其中name就是前面保存参数时用的缓存的标识,必须一致才能正确取回保存的参数。取回的参数会和当前的配置参数合并,无需手动合并。

来自 
http://www.thinkphp.cn/simple/functions_c.html


C方法是ThinkPHP用于设置、获取,以及保存配置参数的方法,使用频率较高。
了解C方法需要首先了解下ThinkPHP的配置,因为C方法的所有操作都是围绕配置相关的。ThinkPHP的配置文件采用PHP数组格式定义。
由于采用了函数重载设计,所以用法较多,我们来一一说明下。
设置参数
  1. C('DB_NAME','thinkphp');
复制代码
 
表示设置DB_NAME配置参数的值为thinkphp,由于配置参数不区分大小写,所以下面的写法也是一样:[-more-]
  1. C('db_name','thinkphp');
复制代码
 
但是建议保持统一大写的配置定义规范。
项目的所有参数在未生效之前都可以通过该方法动态改变配置,最后设置的值会覆盖前面设置或者惯例配置里面的定义,也可以使用参数配置方法添加新的配置。
支持二级配置参数的设置,例如:
  1. C('USER.USER_ID',8);
复制代码
 
配置参数不建议超过二级。
如果要设置多个参数,可以使用批量设置,例如:
  1. $config['user_id'] = 1;
  2. $config['user_type'] = 1;
  3. C($config);
复制代码
 
如果C方法的第一个参数传入数组,就表示批量赋值,上面的赋值相当于:
  1. C('USER_ID',1);
  2. C('USER_TYPE',1);
复制代码
 
[-more-]
获取参数
要获取设置的参数,可以用:
  1. $userId = C('USER_ID');
  2. $userType = C('USER_TYPE');
复制代码
 
如果USER_ID参数尚未定义过,则返回NULL。
也可以支持获取二级配置参数,例如:
  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参数后,会连同当前所有的配置参数保存到缓存文件(或者其他配置的缓存方式)。
保存之后,如果要取回保存的参数,可以用
  1. $config = C('','name');
复制代码
 
其中name就是前面保存参数时用的缓存的标识,必须一致才能正确取回保存的参数。取回的参数会和当前的配置参数合并,无需手动合并。
评论(30相关
skyfynn07月23日
C函数是在哪个文件中实现的?没有找到啊
回复joncv08月15日
框架目录/Common/common.php里473行,thinkphp_3.2.3
llizzy2015年05月14日
不错 赞个
皇虫2015年03月11日
这个很需要
东星大飞哥2014年11月18日
  1. 能来点实例吗
复制代码
复制代码
复制代码
 
复制代码
 
武汉老乡2014年09月09日
一点不懂同学说看下c方法,差不多就会读取系统内存信息,但我还是不知道怎么获取,不要做永远的大白
小尾巴儿2014年07月16日
给力 顶起
平台网2014年07月03日
学习了~~不错。框架的第一个函数
florida07232014年06月05日
模板中怎样用C获取配置文件中二维数组的值??
回复wsztl0103月01日
config.php中: 'test'=>array(array('a')),
模板中: {:C('test')[0][0]}
结果: a
大师兄20132014年05月07日
什么啊 都看不懂
  1.  
  2.  <?php
  3.  //嘛也不懂
  4.  ?>
  5.  
复制代码
复制代码
复制代码
 
复制代码
 
神泣2014年03月12日
我怎么理解成C方法就是F方法(也可能是S,没细看)的简单数据缓存用法呢
回复hainuo2014年05月15日
不一样吧
tanzhi012014年01月16日
会改变写入到配置文件里面吗
happyckx2013年11月05日
不错,学习了下。
happyckx2013年11月01日
不错,好用。
抹綄待續2013年10月12日
不能跨分组?
qq23050377162013年10月09日
不错啊,
王,琨。2013年09月23日
$config['user_id'] = 1;
$config['user_type'] = 1;
C($config,'name');
测试后,Conf/config.php未保存新值。而缓存文件里是更新了的,求证?我的是3.1.3版本。
回复zing2013年10月09日
看了下源码, 并不是用久保存配置参数, 而仅是S方法保存在缓存里。
回复前世有约丶2013年10月31日
需要使用F方式改变文件的值 c方法是读取设置临时改变。
回复背傷旧走working days2014年01月23日
我的也在缓存里。你的解决了没有?
回复hainuo2014年05月15日
这里就是说的那个runtime.php 并不对config文件进行操作啊
qmit2013年08月22日
不好意思,对这个动态修改我还不是很清楚,我使用下面的好似不能哦。
  1.  
  2.  public function t1(){
  3.         C('URL_ROUTE_RULES',array('1'=>'test1','2'=>'test2'));
  4.    }
  5.  public function t2(){
  6.    dump(C('URL_ROUTE_RULES'));
  7.  }
  8.  
复制代码
 
复制代码
 
回复qmit2013年08月22日
貌似要先保存到一个缓存标识里面,我是想保存到 ~runtime.php 里面去的哦,该怎么做呢?
回复zing2013年10月09日
回复 qmit : 颠倒了, 应该是 
  1.  
  2. C(array('1'=>'test1','2'=>'test2'),'URL_ROUTE_RULES');
  3.  
复制代码
 
复制代码
 

取出用
  1.  
  2. C('','URL_ROUTE_RULES');
  3.  
复制代码
 
复制代码
 
回复qmit2013年10月18日
回复 zing : 我看到1=>'test1',2=>'test2'写入配置文件里面去了,但是通过你的方法取出来的不是写到URL_ROUTE_RULES这个节点里面哦?
wqs1849302032013年08月06日
为何我在model类使用会报错呢?
syntax error, unexpected '(', expecting ',' or ';'
myfirtyou2013年08月01日
方法很重要
zhangleiphp2013年06月21日
很方便
勇往直前19902013年06月03日
c方法不错!
小罢2013年04月03日
动态修改配置不错啊
tangyunfei2013年03月16日
这个C修改的是哪里的配置 我使用了后 输出配置看是修改成功 但是当前项目下的config.php里根本没有变化
回复kyeeliu2013年03月25日
好像修改的是缓存,动态修改很不错,不过保存配置还没有搞明白怎么实现?
nlove5182013年01月13日
怎么用C方法有一些配置项是读取不出来的?
hgxinthinkphp2013年01月12日
学习了...
xiaozhe3392012年10月15日
不错的学习资料~~
thinkphp2012年10月06日
C方法是动态修改配置,你直接修改配置文件就不是动态的了
回复xinpeng2013年01月06日
请问哪里有建表的教程?不会要所有的表都先建立再使用吧?程序中经常会按随机表名自动建表。翻遍教程和百度也没有找到。求解
vasileon2012年09月19日
在自定义Model类里可以用C方法获取配置信息吗?
回复thinkphp2012年09月24日
当然可以
thinkphp2012年09月14日
保存的位置是由配置的缓存方式确定的,参考cache方法的用法就行,以后会详细说明如何使用cache方法的。
回复背傷旧走working days2014年01月22日
如果不清楚保存的混村文件可以一直保存了是吗?
小树叶子2012年09月14日
可以指定保存的位置以及可以指定保存的文件吗?
回复dewfeelrq2012年09月25日
可以直接修改配置文件就好了!
来自 http://www.thinkphp.cn/document/136.html
普通分类: