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

<?php
$config['uri_protocol'] = 'REQUEST_URI'; // ... $config['charset'] = 'UTF-8'; // ... $config['subclass_prefix'] = 'My_';

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

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

自定义配置

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

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

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

<?php
$this->config->load('custom');
$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,它们的内容如下:

// custom1.php
$config['index_page'] = 'welcome1'; // custom2.php
$config['index_page'] = 'welcome2';

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

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

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

$this->config->item('index_page', 'custom1'); // 'welcome1'
$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. shit layui & select & re-render & bug

    shit layui https://www.layui.com/doc/modules/form.html#onselect https://www.layui.com/doc/element/fo ...

  2. hdu 1179最大匹配

    #include<stdio.h> #include<string.h> #define N 200 int map[N][N],visit[N],link[N],n,m; i ...

  3. 【Intellij 】Intellij IDEA 添加jar包的三种方式

    一.直接复制:(不推荐) 方法:直接将硬盘上的jar包复制粘贴到项目的lib目录下即可. 注意: 1.对于导入的eclipse项目,该方式添加的jar包没有任何反应,用make编译项目会报错 2.对于 ...

  4. POJ 2411_Mondriaan's Dream

    题意: 用1*2和2*1的方块将给定长宽的矩形填满.问有多少种放法,对称的算两种. 分析: 状态压缩dp 首先用0表示前一行没有竖块占用这个位置,而1表示该位置和他上方的位置放了一个竖块,从而压缩状态 ...

  5. KMP算法 C#实现 字符串查找简单实现

    KMP算法 的C#实现,初级版本 static void Main(string[] args) { #region 随机字符 StringBuilder sb = new StringBuilder ...

  6. 遍历ArrayList数组时可能存在的问题

    我们都知道ArrayList类中有个重要的方法是Add(),该方法用于向集合中添加元素,它有一个object类型的参数,表示通过该方法可以向集合中添加任意类型的项,由于ArrayList动态数组中的元 ...

  7. Spring_2_Spring中lazy-init和scope属性

    1)springTest类: public class springTest { @Test public void instanceSpring() { AbstractApplicationCon ...

  8. openTSDB ConnectionManager: Unexpected exception from downstream java.io.IOException: Broken pipe

    openTSDB有这种错误: ConnectionManager: Unexpected exception from downstream for [id: 0xf85323a8, /10.65.3 ...

  9. react 项目实战(二)创建 用户添加 页面 及 fetch请求 json-server db.json -w -p 8000

    1.安装 路由 npm install -S react-router@3.x 2.新增页面 我们现在的应用只有一个Hello React的页面,现在需要添加一个用于添加用户的页面. 首先在/src目 ...

  10. Android清单文件具体解释(四) ---- backupAgent的使用方法

    在<application>节点中有一个很重要的属性,那就是backupAgent.这里我们将它单独列出来,从基本含义,使用方法及其相关属性等方面来具体介绍一下. 1.backupAgen ...