# 升级配置

## 文档

- CodeIgniter 3.x 配置文档

- CodeIgniter 4.x 配置文档

## 变更内容

- 在 CI4 中，配置现在存储在继承 `CodeIgniter\Config\BaseConfig` 的类中。

- CI3 中的 application/config/config.php 对应 CI4 的 app/Config/App.php， 以及其他针对特定类的文件，例如 app/Config/Security.php。

- 在配置类中，配置值存储为公共类属性。

- 获取配置值的方法已发生变化。

## 升级指南

1. 根据 CI3 文件中的变更，修改 CI4 默认配置文件中的值。配置名称与 CI3 基本一致。

2. 如果在 CI3 项目中使用了自定义配置文件，需要在 CI4 项目的 app/Config 中将其创建为新的 PHP 类。这些类应位于 `Config` 命名空间，并继承 `CodeIgniter\Config\BaseConfig`。

3. 创建所有自定义配置类后，将 CI3 配置中的变量复制到新的 CI4 配置类中，并作为公共类属性。

4. 更新所有获取配置值的代码语法。CI3 的写法类似 `$this->config->item('item_name');`，需要改为 `config('MyConfig')->item_name;`。

## 代码示例

### CodeIgniter 3.x 版本

路径：application/config/site.php：

    <?php

    defined('BASEPATH') OR exit('No direct script access allowed');

    $siteName  = 'My Great Site';
    $siteEmail = 'webmaster@example.com';

### CodeIgniter 4.x 版本

路径：app/Config/Site.php：

    <?php

    namespace Config;

    use CodeIgniter\Config\BaseConfig;

    class Site extends BaseConfig
    {
        public $siteName  = 'My Great Site';
        public $siteEmail = 'webmaster@example.com';
    }