Iam 正在浏览 OpenCart 的代码。我找到了一个叫做的库类文件。配置.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);
所以我正在加载到这个类中的配置文件。 我将如何构建它,以便它能够与这个系统配置类合并?
看看 PHP 文档 array_merge,它准确地说,它是如何工作的:
如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个值。但是,如果数组包含数字键,则后面的值不会覆盖原始值,而是会追加。
这基本上意味着在您的配置(稍后加载)中,您可以有一个空的$cfg
数组,然后它将不执行任何操作。如果在配置数组中设置了一些变量:
$cfg = array();
$cfg["var"] = "value";
它将创建一个新设置(如果以前未设置),或者将覆盖该设置。
当然,如果您在之后加载另一个配置,它将再次覆盖两个配置中设置的任何值。最后一个获胜。
你基本上需要创建一个 php 文件并使用键值对定义 $cfg 数组。例
<?php
$cfg['some_var'] = 'value';
$cfg['som_other_var'] = 'some other value';