2

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

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

4

2 回答 2

3

看看array_merge 的 PHP 文档,它准确地说明了它是如何工作的:

如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个。但是,如果数组包含数字键,则后面的值不会覆盖原始值,而是会被追加。

这基本上意味着在你的配置中(稍后加载)你可以有一个空$cfg数组,然后它什么也不做。如果您在配置数组中设置了一些变量:

$cfg = array();
$cfg["var"] = "value";

它将创建一个新设置(如果之前未设置)或覆盖此类设置。

当然,如果您在加载另一个配置再次覆盖两个配置中设置的任何值。最后一个获胜。

于 2012-05-01T17:14:17.507 回答
1

您基本上需要创建一个 php 文件并使用键值对定义 $cfg 数组。例子

<?php

$cfg['some_var'] = 'value';
$cfg['som_other_var'] = 'some other value';
于 2012-05-01T17:17:09.860 回答