THIINKPHP框架中C函数详解

直接帖出来TP框架中关于C函数的源代码,一些内容在代码注释中
/**
 * 获取和设置配置参数 支持批量定义
 * @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; // 避免非法参数}

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值