OpenCart 配置类如何工作


OpenCart How does the config class work?

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';