OpenCart配置类如何工作?

时间:2012-05-01 16:56:23

标签: php opencart

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

所以我的配置文件我正在加载到这个类。我将如何构建它以便能够将它与此系统配置类合并?

2 个答案:

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