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 注 ...
随机推荐
- UVALive 6430 (水dp)
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- MTK平台如何定位显示花屏和界面错乱等绘制异常的问题?
[DESCRIPTION] 在测试手机各项功能过程中,经常会遇到概率性复现“屏幕画花了,界面画错乱了等绘制异常问题”,而且概率还非常小: 这类问题请不要直接提交eService,而是先请测试人员及工程 ...
- vimtips阅读记录
__BEGIN__ *vimtips.txt* For Vim version 8.0. ------------------------------------------------------- ...
- HDU 5950 Recursive sequence 递推转矩阵
Recursive sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- 2017-10-03-morning
#include <algorithm> #include <cstring> #include <cstdio> inline void read(int &am ...
- JSP发送电子邮件
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/sending-email.html: 发送一个简单的电子邮件 给出一个简单的例子,从机器上发送一个简单的 ...
- springmvc @ResponseBody 乱码
在spring配置文件中加入如下代码 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMet ...
- SaltStack学习系列之State安装Nginx+PHP环境
目录结构 |-- pillar | |-- nginx | | `-- nginx.sls #nginx变量(key:value) | `-- top.sls `-- salt|-- init #初始 ...
- 请问这个「 (?<=<(\w+)>).*(?=<\/\1>) 」正则表达式是什么意思呢?
问题:https://www.zhihu.com/question/26480812 (?<=<(\w+)>).*(?=<\/\1>) ---------------- ...
- [AngularJS] Store the entry url and redirect to entry url after Logged in
For example when a outside application need to visit your app address: https://www.example.com/#/lob ...