CodeIgnitor 配置类的使用
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.php
和 custom2.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 配置类的使用的更多相关文章
- Startup配置类 居然又是约定
Microsoft.Owin.Host.SystemWeb 这个dll可以让OWin接管IIS的请求,虽然同样是托管在IIS,但是所有的请求都会被OWin来处理.在OWin的4层结构中(Applica ...
- .net config文件 配置类的集合
1,appconfig文件 <configSections> <section name="ToolConfig" type="DMTools.Tool ...
- Microsoft.Extensions.Options支持什么样的配置类?
在.Net core中,微软放弃了笨重基于XML的.Config配置文件(好吧,像我这种咸鱼早都忘了如何自己写一个Section了). 现在主推新的高度可扩展的配置文件(参见此处) 对于新的配置系统, ...
- MinerConfig.java 爬取配置类
MinerConfig.java 爬取配置类 package com.iteye.injavawetrust.miner; import java.util.List; /** * 爬取配置类 * @ ...
- Springboot 配置类( @Configuration) 不能使用@Value注解从application.propertyes中加载值以及Environment为null解决方案
最近遇到个场景,需要在使用@Bean注解定义bean的时候为对象设置一些属性,比如扫描路径,因为路径经常发布新特性的时候需要修改,所以就计划着放在配置文件中,然后通过@ConfigurationPro ...
- 使用 universalimageloader 缓存图片的配置类及使用方法
0.gradle 配置 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:juni ...
- 兼容 Spring Boot 1.x 和 2.x 配置类参数绑定的工具类 SpringBootBindUtil
为了让我提供的通用 Mapper 的 boot-starter 同时兼容 Spring Boot 1.x 和 2.x,增加了这么一个工具类. 在 Spring Boot 中,能够直接注入 XXProp ...
- SpringBoot swagger-ui.html 配置类继承 WebMvcConfigurationSupport 类后 请求404
1 .SpringBoot启动类加上 注解 @EnableWebMvc @SpringBootApplication@EnableWebMvc public class Application { ...
- Spring boot 配置文件参数映射到配置类属性
[参考文章]:SpringBoot之@EnableConfigurationProperties分析 [参考文章]:在Spring Boot中使用 @ConfigurationProperties 注 ...
随机推荐
- 添物不花钱学JavaEE(基础篇)-综述
JavaEE由一堆基础标准组成.JavaEE开发一般需要如下工具和掌握如下内容: Java环境 Eclipse或其他开发工具 Tomcat容器或类似软件 Jsp/Servlet/Web/JDBC的掌握 ...
- 全文搜索(AC-1)-互联网信息过载问题
什么是信息过载? 信息检索技术是什么? 信息过滤技术是什么?
- hdu 1166 树状数组模板题
#include<stdio.h> #include<string.h> #define N 51000 int c[N],n; int number(int x) { r ...
- 2018/3/3 解析ThreadLocal源码
今天听到一个老哥说道ThreadLocal在源码设计上面的一些好处,于是决定把ThreadLocal源码彻底分析一下. 首先,我们来看下set方法 可以看到,这个方法里,先获得了当前线程,之后将当前线 ...
- NOIP2012提高组D1T3 开车旅行
n<=100000个山,每个山有高度,从一个山到另一个山代价为高度差,有A和B两人一起开车,A每次选前进方向的次近山,B选最近,保证山高度不同且如果代价相同的山低的代价算小,每次旅行先A走,然后 ...
- idea使用之maven中央仓库索引更新
接着上篇,上篇是更新本地已有的索引,这样在编写pom文件的时候,可以自动提示,但如果我们能够把整个中央仓库的索引更新下来,那不是更方便啦. 打开settings-->Build,Executio ...
- msp430入门学习10
msp430的定时器--看门狗 msp430入门学习
- Linux下汇编语言学习笔记1 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- 我的arcgis培训照片8
来自:http://www.cioiot.com/successview-554-1.html
- Lua:ipairs和pairs的区别
ipairs 和pairs在lua中都是遍历tbale的函数但是两者有区别 1.pairs遍历table中的所有的key-vale 而ipairs会根据key的数值从1开始加1递增遍历对应的table ...