将CI3升级到CI4-配置文件升级到、配置文件

由网友(ζ居家男人,)分享简介:在我的Codeigniter 3中,我有一个简单的settings.php文件,如下所示:<?php$config["lang1_HTML"] = "sr-Latn-RS";$config["lang1_HTML_2"] = "sr-Latn";$config["lang1_HTML_3"] = "";$con...

在我的Codeigniter 3中,我有一个简单的settings.php文件,如下所示:

<?php

$config["lang1_HTML"] = "sr-Latn-RS";
$config["lang1_HTML_2"] = "sr-Latn";
$config["lang1_HTML_3"] = "";
$config["lang1_code"] = "SRP";
$config["lang1_flag"] = "/images/flags/rs.png";
$config["sr"] = "lang1";
$config["lang3"] = "en";
$config["lang3_HTML"] = "en-RS";
$config["lang3_HTML_2"] = "en";
$config["lang3_HTML_3"] = "";
$config["lang3_code"] = "ENG";
...

现在我想将其升级到CI4。是否有可能在不更改此文件的情况下将其放入appConfig中,并且仍然可以访问此数组?

springboot项目中application.properties配置文件图标没有变为小叶子解决方案

或者更好的是,是否可以自动加载Settings.php并像这样使用它?

推荐答案

Upgrading from 3.x to 4.x » Upgrade Configuration

升级指南

您必须根据CI3文件中的更改更改默认CI4配置文件中的值。配置名称很漂亮 与CI3中的基本相同。

如果在CI3项目中使用自定义配置文件,则必须在中将这些文件创建为CI4项目中的新PHP类 应用/配置。这些类应该位于Config命名空间中,并且应该扩展CodeIgniterConfigBaseConfig

一旦创建了所有自定义配置类,就必须将变量从CI3配置复制到新的CI4配置类中 公共类属性。

现在,您必须在获取配置值的任何地方更改配置获取语法。CI3语法类似于 $this->config->item('item_name');。你必须把这个改成 config('MyConfigFile')->item_name;

步骤A:

在扩展CodeIgniterConfigBaseConfigConfig命名空间中创建新类app/Config/Settings.php

步骤B:

将变量从CI3配置复制到新的CI4配置类中,作为公共类属性。即:

<?php

namespace Config;

class Settings extends CodeIgniterConfigBaseConfig
{
    public string $lang1_HTML = "sr-Latn-RS";
    public string $lang1_HTML_2 = "sr-Latn";
    public string $lang1_HTML_3 = "";
    public string $lang1_code = "SRP";
    public string $lang1_flag = "/images/flags/rs.png";
    public string $sr = "lang1";

    // ...

}

步骤C:

在获取配置值的位置更改配置获取语法。

即:从$this->config->item('lang1_HTML');config(ConfigSettings::class)->lang1_HTML;

摘要:

CodeIgnter 3.x CodeIgniter 4.x 1.加载自定义配置文件。 Manual Loading$this->config->load('config_filename'); CodeIgniter 4.x将在所有定义的命名空间中automatically look for the files以及/app/Config/。 2.处理名称冲突 如果需要加载多个配置文件,通常会将它们合并到一个主$config数组中。为了避免冲突,可以将第二个参数设置为TRUE,每个配置文件将存储在与配置文件名称对应的数组索引中。加载配置文件:$this->config->load('settings', TRUE);访问项:$this->config->item('settings')['lang1_HTML'] 您不必担心这一点,因为所有配置文件都驻留在各自的类中。访问项:config(ConfigSettings::class)->lang1_HTML 3.获取配置项。 $this->config->item('lang1_HTML'); config(ConfigSettings::class)->lang1_HTML 4.动态设置或更改已有的配置项。 Set item:$this->config->set_item('lang1_HTML', 'sr-Cyrl-ME');访问设置项:$this->config->item('lang1_HTML'); 设置项:config(ConfigSettings::class)->lang1_HTML = 'sr-Cyrl-ME'访问设置项:config(ConfigSettings::class)->lang1_HTML 5.自动加载。 Global Auto-loading:打开应用程序/配置/autoload.php中的autoload.php文件,按照文件中的指示添加您的配置文件。$autoload['config'] = array('settings'); 全局自动加载:config(...) helper function默认返回特定配置类的共享实例,无需配置。因此,您始终可以使用:config('config_class_here')->item_name_here;访问您的配置
阅读全文

相关推荐

最新文章