CI 的配置文件统一放在 application/config/ 目录下面,框架有一个默认的主配置文件 application/config/config.php。其部分内容如下:

  1. <?php
  2. $config['uri_protocol'] = 'REQUEST_URI';
  3. // ...
  4. $config['charset'] = 'UTF-8';
  5. // ...
  6. $config['subclass_prefix'] = 'My_';

可以看到所有的配置信息都放在 $config 数组里。框架默认会加载这个配置文件,所以使用时直接用 item() 调用:

  1. <?php
  2. $this->config->item('uri_protocol'); // 'REQUEST_URI'

自定义配置

如果你不想使用默认的配置文件,而是自己创建一个新的配置文件,那也是可以的。在 application/config/ 目录下面创建一个 custom.php

  1. <?php
  2. $config['index_page'] = 'welcome';

使用时,需要先加载 custom.php 文件,然后获取配置内容:

  1. <?php
  2. $this->config->load('custom');
  3. $index_page = $this->config->item('index_page'); // 'welcome'

从前面两个例子中可以看到配置信息都是 $config 数组的键指定的,那么是否可以自定义一个变量来指定配置信息呢?答案是'''不可以''',无论是系统的 config.php 还是自定义的配置文件,都必须在 $config 数组中定义配置项,因为 CI Config 在加载配置文件时会检查是否含有 $config 数组,如果没有,就报错:'Your '.$file_path.' file does not appear to contain a valid configuration array.'

避免重复键冲突

当加载多个配置文件时,这些配置文件中的 $config 会合并,所以如果在不同的配置文件中如果有相同的键的话,就会产生冲突(先加载的配置会被后加载的配置覆盖)。这可以通过指定 load() 的第二个参数来解决。

假设现在有两个配置文件:custom1.phpcustom2.php,它们的内容如下:

  1. // custom1.php
  2. $config['index_page'] = 'welcome1';
  3. // custom2.php
  4. $config['index_page'] = 'welcome2';

在加载时指定 load() 第二个参数为 TRUE,来分别保存配置项的值到不同的数组中(而不是原来的的 $config):

  1. $this->config->load('custom1.php', TRUE);
  2. $this->config->load('custom2.php', TRUE);

然后在获取配置项时,在 item() 第二个参数指定配置文件名就可以正确获取到配置项了:

  1. $this->config->item('index_page', 'custom1'); // 'welcome1'
  2. $this->config->item('index_page', 'custom2'); // 'welcome2'

PS - 个人博客链接:CodeIgnitor 配置类的使用

CodeIgnitor 配置类的使用的更多相关文章

  1. Startup配置类 居然又是约定

    Microsoft.Owin.Host.SystemWeb 这个dll可以让OWin接管IIS的请求,虽然同样是托管在IIS,但是所有的请求都会被OWin来处理.在OWin的4层结构中(Applica ...

  2. .net config文件 配置类的集合

    1,appconfig文件 <configSections> <section name="ToolConfig" type="DMTools.Tool ...

  3. Microsoft.Extensions.Options支持什么样的配置类?

    在.Net core中,微软放弃了笨重基于XML的.Config配置文件(好吧,像我这种咸鱼早都忘了如何自己写一个Section了). 现在主推新的高度可扩展的配置文件(参见此处) 对于新的配置系统, ...

  4. MinerConfig.java 爬取配置类

    MinerConfig.java 爬取配置类 package com.iteye.injavawetrust.miner; import java.util.List; /** * 爬取配置类 * @ ...

  5. Springboot 配置类( @Configuration) 不能使用@Value注解从application.propertyes中加载值以及Environment为null解决方案

    最近遇到个场景,需要在使用@Bean注解定义bean的时候为对象设置一些属性,比如扫描路径,因为路径经常发布新特性的时候需要修改,所以就计划着放在配置文件中,然后通过@ConfigurationPro ...

  6. 使用 universalimageloader 缓存图片的配置类及使用方法

    0.gradle 配置 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:juni ...

  7. 兼容 Spring Boot 1.x 和 2.x 配置类参数绑定的工具类 SpringBootBindUtil

    为了让我提供的通用 Mapper 的 boot-starter 同时兼容 Spring Boot 1.x 和 2.x,增加了这么一个工具类. 在 Spring Boot 中,能够直接注入 XXProp ...

  8. SpringBoot swagger-ui.html 配置类继承 WebMvcConfigurationSupport 类后 请求404

    1 .SpringBoot启动类加上  注解 @EnableWebMvc @SpringBootApplication@EnableWebMvc public class Application { ...

  9. Spring boot 配置文件参数映射到配置类属性

    [参考文章]:SpringBoot之@EnableConfigurationProperties分析 [参考文章]:在Spring Boot中使用 @ConfigurationProperties 注 ...

随机推荐

  1. 添物不花钱学JavaEE(基础篇)-综述

    JavaEE由一堆基础标准组成.JavaEE开发一般需要如下工具和掌握如下内容: Java环境 Eclipse或其他开发工具 Tomcat容器或类似软件 Jsp/Servlet/Web/JDBC的掌握 ...

  2. 全文搜索(AC-1)-互联网信息过载问题

    什么是信息过载? 信息检索技术是什么? 信息过滤技术是什么?

  3. hdu 1166 树状数组模板题

    #include<stdio.h> #include<string.h> #define N  51000 int  c[N],n; int number(int x) { r ...

  4. 2018/3/3 解析ThreadLocal源码

    今天听到一个老哥说道ThreadLocal在源码设计上面的一些好处,于是决定把ThreadLocal源码彻底分析一下. 首先,我们来看下set方法 可以看到,这个方法里,先获得了当前线程,之后将当前线 ...

  5. NOIP2012提高组D1T3 开车旅行

    n<=100000个山,每个山有高度,从一个山到另一个山代价为高度差,有A和B两人一起开车,A每次选前进方向的次近山,B选最近,保证山高度不同且如果代价相同的山低的代价算小,每次旅行先A走,然后 ...

  6. idea使用之maven中央仓库索引更新

    接着上篇,上篇是更新本地已有的索引,这样在编写pom文件的时候,可以自动提示,但如果我们能够把整个中央仓库的索引更新下来,那不是更方便啦. 打开settings-->Build,Executio ...

  7. msp430入门学习10

    msp430的定时器--看门狗 msp430入门学习

  8. Linux下汇编语言学习笔记1 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  9. 我的arcgis培训照片8

    来自:http://www.cioiot.com/successview-554-1.html

  10. Lua:ipairs和pairs的区别

    ipairs 和pairs在lua中都是遍历tbale的函数但是两者有区别 1.pairs遍历table中的所有的key-vale 而ipairs会根据key的数值从1开始加1递增遍历对应的table ...