2

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

したがって、このクラスにロードしている構成ファイル。このシステム構成クラスとマージできるように、どのように構造化すればよいですか?

4

2 に答える 2

3

array_mergeのPHPドキュメントを見てください。正確には、それがどのように機能するかを示しています。

入力配列に同じ文字列キーがある場合、そのキーの新しい値が前の値を上書きします。ただし、配列に数値キーが含まれている場合、後の値は元の値を上書きしませんが、追加されます。

これは基本的に、構成(後でロードされる)で空の$cfg配列を持つことができ、それでは何もしないことを意味します。構成配列に変数を設定した場合:

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

新しい設定を作成するか(以前に設定されていない場合)、そのような設定を上書きします。

もちろん、後で別の構成をロードすると、両方の構成に設定されている値がすべて上書きされます。最後の1つが勝ちます。

于 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 に答える