配置类

优质
小牛编辑
131浏览
2023-12-01

该配置类提供一种方法来进行偏好设置。该偏好来源于默认的配置文件(application/config/config.php) 或您自己定制的配置文件。

注意:该类已经自动加载而无需手动启用。

分析配置文件

默认情况下,CodeIgniter已经有一个主要的配置文件,位于application/config/config.php。如果你用文本编辑器打开你会看到配置项目被存储在一个叫$config的数组里。

您可以添加您自己的配置项目到这个文件里,或者您更愿意让您自己的配置项目与原配置项目分开(假设你需要额外的配置项),简单的创建一个文件并保存到config这个文件夹里就行了。

提示: 如果你想建立一个和主要配置文件一样格式的配置文件,把你的配置项目建立在一个名为$config的数组中,即使配置文件中有相同的数组名,CodeIgniter也能智能的管理这些文件而不会发生冲突.

加载配置文件

Note: CodeIgniter 会自动加载主要的配置文件(application/config/config.php), 所以你只需要加载你自己创建的配置文件

有两种方法来加载配置文件:

  1. 手动加载

    为了加载一个你自定义的配置文件,你需要在 controller 中这样做:

    $this->config->load('filename');

    这里的 filename 是你自定义的配置文件的文件名,这个文件名没有 .php 的扩展名.

    如果你需要加载多个自定义配置文件,一般情况下它们会被合并成一个数组。然而,如果在不同的配置文件中存在同名的索引,那么会发生冲突。为了避免这个问题,你可以把第二个参数设置为 TRUE ,这可以使每个配置文件的内容存储在一个单独的数组中,数组的索引就是配置文件的文件名。请看下面的例子:

    // 用这样的方式保存为一个数组: $this->config['blog_settings'] = $config
    $this->config->load('blog_settings', TRUE);

    请阅读下面名为 获取配置元素 的部分以了解在这样的方式下如何取得配置信息

    第三个参数允许屏蔽当配置文件不存在时产生的错误信息:

    $this->config->load('blog_settings', FALSE, TRUE);
  2. 自动加载

    如果你需要一个特定配置文件在全局范围内都能使用,你可以使系统自动加载它。要自动加载配置,请打开文件 autoload.php,它在 application/config/autoload.php,然后按照文件中的提示增加你想要自动加载的配置文件。

获取配置元素

从配置文件中检索元素,使用下面的函数:

$this->config->item('item name');

其中 item name 是 $config 数组中你期望检索的索引. 例如,要获得您选择的语言,你可以这样做:

$lang = $this->config->item('language');

当试图获取的元素不存在时,此函数返回 FALSE (boolean) 。

如果你为了用具体的索引来声明配置数组(避免上述索引重名问题)而在函数 $this->config->load 中使用了第二个参数,你可以通过指定函数 $this->config->item() 的第二个参数为特定索引名来获取相关的配置元素。例如:

// 载入一个名为 blog_settings.php 的配置文件,然后把它声明为一个索引为 "blog_settings" 的数组
$this->config->load('blog_settings', TRUE);

// 在数组 blog_settings 中获取名为 site_name 的配置元素
$site_name = $this->config->item('site_name', 'blog_settings');

// 另外一种方式:
$blog_config = $this->config->item('blog_settings');
$site_name = $blog_config['site_name'];

设置一项元素

如果你想动态设置/改变一个现有的配置元素,你可以使用:

$this->config->set_item('item_name', 'item_value');

其中 item_name 是你希望改变的 $config 数组的索引, item_value 是改变后的值.

注意:这里修改的配置元素并不是改变配置文件(application/config/config.php)的值,仅改变当前$this->config->item()方法取到的值

环境

你可以根据当前的开发/服务环境读取不同的配置文件. ENVIRONMENT 常量在 index.php 定义, 在 处理多环境 一章有详细的描述和说明.

一个特定环境的配置文件, 需要按此路径创建或者复制一个文件: application/config/{ENVIRONMENT}/{FILENAME}.php

例如,要创建一个仅'production'环境的 config.php, 你应该:

  1. 创建文件夹:application/config/production/
  2. 复制现有的 config.php 到上面的文件夹
  3. 编辑 application/config/production/config.php 设定你在'production'环境所需的设置

当你设置 ENVIRONMENT 常量为 'production', 你刚创建的仅'production'环境的 config.php 配置文件将被加载。

你可以放置以下配置文件到特定环境的文件夹:

  • 默认的 CodeIgniter 配置文件
  • 你自己的用户配置文件

注意: CodeIgniter 会先尝试加载当前环境的配置文件。 如果文件不存在,将加载全局配置文件,例如 (application/config/) 。 这意味着你没有必要把 所有的配置文件放在特定环境的文件夹里, − 仅仅把各环境不同的放进去就行了。

辅助函数

配置类有以下辅助函数:

$this->config->site_url();

该函数得到你网站的 URL,其中包含了你在 config 文件中设置的 "index" 的值。

$this->config->base_url();

该函数返回站点的根 URL,可以在这个函数后拼接一个 URL 路径,用以生成 CSS 或图片文件的 URL。

以上两个函数一般通过URL 辅助函数中相应的函数(site_url() 和 base_url())调用。

$this->config->system_url();

该函数得到 system 文件夹的 URL。