Iam正在浏览OpenCart的代码。我找到了一个名为的库类文件。 config.class.php。
这是代码:
public function load($filename)
{
$file = SYS_CONFIG_DIR . $filename . '.php';
if(file_exists($file))
{
$cfg = array();
require($file);
$this->data = array_merge($this->data, $cfg);
}
else
{
trigger_error('Error: Could not load config ' . $filename . '!');
exit();
}
}
我可以看到它首先尝试检查文件是否存在。然后a创建一个var($ cfg)作为数组。那么它需要文件。然后它合并它。这是我不明白的地方。
$this->data = array_merge($this->data, $cfg);
所以我的配置文件我正在加载到这个类。我将如何构建它以便能够将它与此系统配置类合并?
答案 0 :(得分:3)
看看PHP documentation of array_merge,它确切地说,它是如何运作的:
如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个键。但是,如果数组包含数字键,则后面的值不会覆盖原始值,但将被追加。
这基本上意味着在你的配置(稍后加载)中你可以有一个空的$cfg
数组,然后它什么都不做。如果在配置数组中设置了一些变量:
$cfg = array();
$cfg["var"] = "value";
它将创建一个新设置(如果之前未设置)或者它将覆盖此设置。
当然如果你在之后加载另一个配置,它将再次覆盖在两个配置中设置的任何值。最后一个获胜。
答案 1 :(得分:1)
您基本上需要创建一个php文件并使用键值对定义$ cfg数组。实施例
<?php
$cfg['some_var'] = 'value';
$cfg['som_other_var'] = 'some other value';