2012-05-01 50 views
2

Iam正在瀏覽OpenCart的代碼。我找到一個名爲的庫類文件。 config.class.php。OpenCart config類如何工作?

這裏是代碼:

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

我可以看到它首先試圖檢查文件中。然後創建一個var($ cfg)作爲數組。那麼它需要該文件。然後它合併它的。這是我不明白的地方。

$this->data = array_merge($this->data, $cfg); 

所以我的配置文件,我加載到這個類。我如何構建它,以便它能夠將它與此係統配置類合併?

回答

3

看看的PHP documentation of array_merge,它說究竟它是如何工作:

如果輸入的數組中有相同的字符串鍵,則該鍵的後面的值將覆蓋前一個。但是,如果數組包含數字鍵,則後面的值不會覆蓋原始值,但會被追加。

這基本上意味着在你的配置中(稍後加載)你可以有一個空的$cfg數組,然後它什麼都不會做。如果設置了配置陣列中的一些變量:

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

它會創建一個新的設置(如果它不是之前設置),或者將覆蓋這樣的設置。

當然,如果您在之後加載另一個配置,它將再次覆蓋兩個配置中設置的值。最後一場勝利。

1

您基本上需要創建一個php文件並使用鍵值對定義$ cfg數組。示例

<?php 

$cfg['some_var'] = 'value'; 
$cfg['som_other_var'] = 'some other value';