• thinkphp函数学习(3): C函数详解


    function C($name=null, $value=null,$default=null) {
        static $_config = array();
        // 无参数时获取所有
        if (empty($name)) {
            return $_config;
        }
        // 优先执行设置获取或赋值
        if (is_string($name)) {
            if (!strpos($name, '.')) {
                $name = strtolower($name);
                if (is_null($value))
                    return isset($_config[$name]) ? $_config[$name] : $default;
                $_config[$name] = $value;
                return;
            }
            // 二维数组设置和获取支持
            $name = explode('.', $name);
            $name[0]   =  strtolower($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;
        }
        // 批量设置
        if (is_array($name)){
            $_config = array_merge($_config, array_change_key_case($name));
            return;
        }
        return null; // 避免非法参数
    }
    

    这是thinkphp中function.php里面定义的函数。 

    详解:

    此函数功能有:

    1、获得$_config数组,其中保存着配置信息(静态变量只初始化一次,函数执行完毕,值不会消失)

    print_r(C()); // 这样能获得所有已读取或设置的配置信息
    

    2、读取配置的值

    echo C('key');
    echo C('key.subkey');
    //二维数组的读取,对应的配置文件结构为
    return array(
      'key'=>array('subkey','value'),
    )
    

      

    3、动态添加配置

    C('key','value');
    C('key.subkey','value');
    

      

    C函数实现的关键点:

    1、static $_config = array(); 把$_config设置为静态变量,使其能够存储值

    2、配置文件的写法。

    return $arr = array(
        'key1'=>'value';
        'key2'=>array('subkey','value'),        
    );
    /*
    注意开头的return,当include这个文件时,返回的就是这个return返回的值
    */
    

    启发:

    开发项目的时候可以借鉴,这个函数处理系统的配置还是很好用的。  

      

     

     

  • 相关阅读:
    js中return的作用
    jstl标签详解总结
    css——overflow属性用法
    oracle数据批处理
    SQL Server 2000/2005 分页SQL — 单条SQL语句
    dataset和实体类 之间的转换
    barmanager设置
    C#集合类(HashTable, Dictionary, ArrayList)与HashTable线程安全
    comboboxEdit 不能输入,只能选择
    C#在父窗口中调用子窗口的过程(无法访问已释放的对象)
  • 原文地址:https://www.cnblogs.com/bushe/p/4270134.html
Copyright © 2020-2023  润新知