THIINKPHP框架中C函数详解
直接帖出来TP框架中关于C函数的源代码,一些内容在代码注释中
//取的时候写成
$name = explode(".", $name); $name[0] = strtoupper($name[0]); if (is_null($value)) return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : $default; $_config[$name[0]][$name[1]] = $value; return null; } // 批量设置
//主要使用array_merge函数做了数组合并,array_change_key_case函数做了键大写
if (is_array($name)){ $_config = array_merge($_config, array_change_key_case($name,CASE_UPPER)); return null; } return null; // 避免非法参数}
/** * 获取和设置配置参数 支持批量定义 * @param string|array $name 配置变量 * @param mixed $value 配置值 * @param mixed $default 默认值 * @return mixed */ function C($name=null, $value=null,$default=null) { static $_config = array(); // 无参数时获取所有 if (empty($name)) { return $_config; } // 优先执行设置获取或赋值 if (is_string($name)) { if (!strpos($name, ".")) { //在TP开发手册中,有说配置项的键不区分大小写,是因为代码中都默认将键 //转化为大写 $name = strtoupper($name); if (is_null($value)) return isset($_config[$name]) ? $_config[$name] : $default; $_config[$name] = $value; return null; } // 二维数组设置和获取支持 //TP框架中支持,配置项写成二维数组的格式 /*例如<pre style="" class="prettyprint linenums prettyprinted"><li class="L1"><code><span class="kwd"> return</span><span class="pln"> array</span><span class="pun">(</span></code></li><li class="L2"><code><span class="pln"> </span><span class="str">"DEFAULT_MODULE"</span><span class="pln"> </span><span class="pun">=></span><span class="pln"> </span><span class="str">"Index"</span><span class="pun">,</span><span class="pln"> </span><span class="com">//默认模块</span></code></li><li class="L3"><code><span class="pln"> </span><span class="str">"URL_MODEL"</span><span class="pln"> </span><span class="pun">=></span><span class="pln"> </span><span class="str">"2"</span><span class="pun">,</span><span class="pln"> </span><span class="com">//URL模式</span></code></li><li class="L4"><code><span class="pln"> </span><span class="str">"SESSION_AUTO_START"</span><span class="pln"> </span><span class="pun">=></span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="com">//是否开启session</span></code></li><li class="L5"><code><span class="pln"> </span><span class="str">"USER_CONFIG"</span><span class="pln"> </span><span class="pun">=></span><span class="pln"> array</span><span class="pun">(</span></code></li><li class="L6"><code><span class="pln"> </span><span class="str">"USER_AUTH"</span><span class="pln"> </span><span class="pun">=></span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span></code></li><li class="L7"><code><span class="pln"> </span><span class="str">"USER_TYPE"</span><span class="pln"> </span><span class="pun">=></span><span class="pln"> </span><span class="lit">2</span><span class="pun">,</span></code></li><li class="L8"><code><span class="pln"> </span><span class="pun">),</span></code></li><li class="L9"><code><span class="pln"> </span><span class="com">//更多配置参数</span></code></li><li class="L1"><code><span class="pln"> </span><span class="com">//...</span><span class="pun"></span></code></li><li class="L1"><code><span class="pun"> );</span></code></li>*/
//取的时候写成
C("USER_CONFIG.USER_TYPE");
//是通过下面这段代码,先将字符串以.字符分隔,在取出来相应数值$name = explode(".", $name); $name[0] = strtoupper($name[0]); if (is_null($value)) return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : $default; $_config[$name[0]][$name[1]] = $value; return null; } // 批量设置
//主要使用array_merge函数做了数组合并,array_change_key_case函数做了键大写
if (is_array($name)){ $_config = array_merge($_config, array_change_key_case($name,CASE_UPPER)); return null; } return null; // 避免非法参数}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。