由网友(ζ居家男人,)分享简介:在我的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中,并且仍然可以访问此数组?
或者更好的是,是否可以自动加载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:
在扩展CodeIgniterConfigBaseConfig
的Config
命名空间中创建新类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;
访问您的配置相关推荐
最新文章