用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2771|回复: 0
收起左侧

[讨论/交流] 发现一配置文件载入的BUG

[复制链接]
发表于 2012-1-14 08:01:29 | 显示全部楼层 |阅读模式
发现一个算不算bug?的bug..

灵感来源于
http://codeigniter.org.cn/forums/thread-11460-1-1.html这个帖子的"$this->load->config('config');"这句

index.php中可以修改配置文件里的默认配置,  你也可以通过配置类动态修改默认配置
上面两种情况你用到了任何一种,那么千万别再 $this->load->config('config'); 因为CI会再读一次config文件,并覆盖掉你已经动态修改过的配置

配置类载入配置文件时会记录已载入的配置文件,不会重复载入,但是 application/config/config.php不是通过配置类载入的,而是通过get_config()载入的

测试代码:
PHP复制代码
 
                //默认的配置 0
                echo $this->config->item('log_threshold').'<br>';
               
                //动态修改配置为 2
                $this->config->_assign_to_config(array('log_threshold'=>2));
                echo $this->config->item('log_threshold').'<br>';
               
                //bug来了 被默认配置覆盖了 0
                $this->config->load('config');
                echo $this->config->item('log_threshold').'<br>';
               
                //再次设置为 2, 两个2了
                $this->config->_assign_to_config(array('log_threshold'=>2));           
                echo $this->config->item('log_threshold').'<br>';
 
                //再次载入config,这次则没有覆盖2
                $this->config->load('config');
                echo $this->config->item('log_threshold').'<br>';
                exit();
 
 
复制代码

本版积分规则