+ -
当前位置:首页 → 问答吧 → 扩展配置里面的设置项是有大小写区分吗?

扩展配置里面的设置项是有大小写区分吗?

时间:2010-07-16

来源:互联网

手册中有这样一句话:


考虑到扩展配置的特殊需要,扩展配置里面的设置项是有大小写区分的。


在App.class.php中有这样的语句:




        // 读取扩展配置文件
        $list = C('APP_CONFIG_LIST');
        foreach ($list as $val){
            if(is_file(CONFIG_PATH.$val.'.php'))
                C('_'.$val.'_',array_change_key_case(include CONFIG_PATH.$val.'.php'));
        }


查了array_change_key_case的用法:
        // array_change_key_case(array,case)函数将数组的所有的 KEY 都转换为大写或小写。
        // 数组的数字索引不发生变化。如果未提供可选参数(即第二个参数),则默认转换为小写字母。
        // 第二个参数可选  CASE_LOWER - 默认值。以小写字母返回数组的键。
        // 第二个参数可选  CASE_UPPER - 以大写字母返回数组的键。
        // 如果在运行该函数时两个或多个键相同,则最后的元素会覆盖其他元素.




上面的语句应该是将扩展配置中的所有配置键都默认转换成小写,键相同时后面的会覆盖前面的, 这样就不区分大小写了, 和手册说法就不一样了.


不知道我的理解对不? 请指点.

作者: 含海   发布时间: 2010-07-16

楼主的理解应该是正确的。。

一般大小写在linux服务器会出问题。。注意一下就ok

作者: flyfishiii   发布时间: 2010-07-16

测试了, 扩展配置中的只能使用小写读取, C函数默认转化为小写. 不能使用大写读取. 系统配置大小写都可以读取, 如C("APP_Debug")和C("app_debg")一样.  如果想不区分大小写读取, 应该在$name[0]   = strtolower($name[0]);下增加
        $name[1]   = strtolower($name[1]);

但是扩展配置中的配置项的设置(注意不是读取),大小写无所谓.

另外, 对于扩展配置中的二维数组里的设置项, 需要更改C函数才能读取.

作者: 含海   发布时间: 2010-07-18

不区分大小写,这个地方,觉得不是很好,这对于不同系统的话,移植性好么??

作者: gomonday   发布时间: 2011-09-27