.ini
ファイルを読み込むクラスを作成しようとしています。私が作業しているアプリケーションの名前を指定してから、そのファイルを1つまたは複数のファイルにまとめてロードしてください。それが完了したら、私はちょうどそのように呼びます。新しい値を配列にプッシュする静的クラスロジックのヘルプ
Ini::path(BASE_PATH . "config" . DS);
Ini::set_app("testApp");
Ini::load(array("db", "web", "themer"));
その後、私はその機能を追加しようとしているので、私は設定されているIni::$app
せずに使用することができ、現時点ではこの
echo Ini::$get['testApp']['someKey']['someValue'];
ようにそれを使用しようとしています。すなわちIni::$get['someKey']['someValue'];
私の問題は、より多くの.ini
ファイルをIni::$get
アレイにプッシュする方法を理解できないことです。使用方法は、私のpush
メソッドを呼び出して、配列に新しいファイルをプッシュすると仮定され、この
Ini::push("anotherIni");
のようなものでなければなりません。しかし、私は正しく配列を構築するように見えることはできません。どちらか、または新しい値を静的配列にプッシュすることはできません。 array_pushの試みと
私の配列は、print_r()
Array ([testApp] =>)
で出力このオンスのようになります。それ以外の場合は、ここで
Array ([testApp] => Array ([db] => [web] => [themer] =>))
配列に新しいiniファイルをプッシュしようとしてくれなくて、これを出力し、私でありますクラスファイル(回答を反映するように更新)
class Ini {
public static $get = array();
public static $tmp = array();
public static $path;
public static $app;
public static $push;
public static function load($file)
{
if (is_array($file)) {
foreach ($file as $ini)
self::$get[self::$app][$ini] = parse_ini_file(self::$path . $ini . ".ini", true);
//array_push(self::$get[self::$app], "testIni");
} else {
self::$get[self::$app][$file] = parse_ini_file(self::$path . $file . ".ini", true);
}
}
public static function push($file)
{
self::$tmp[$file] = parse_ini_file(self::$path . $file . ".ini", true);
array_push(self::$get[self::$app], self::$tmp[$file]);
}
public static function set_app($name)
{
self::$app = $name;
self::$get[self::$app] = array();
}
public static function path($path)
{
self::$path = $path;
return self::$path;
}
// TODO: Create 'write', 'delete', 'append' function to change ini values
}
heh、私は最初の試みに基づいてオブジェクトにしようとしましたが、別のページでこの情報が必要な場合は、新しいオブジェクトを作成してデータをリセットしたくないという問題がありました。私はシングルトンを読んだが、静的なクラスと同じように動作するがコードは少なくて済むことが分かった。 – Eli
PHPについて誤解をお持ちですか? Apache PHPモジュールでは、各Webページは独立しています。変数は要求の終わりに常に削除されます。したがって、あるページでオブジェクトを宣言して別のページで使用することはできません(_page_によって、ユーザー要求に応じて_webページが表示されますが、同じファイルに存在する可能性もあります)。各リクエストでiniファイルを解析しない場合は、APCまたはmemcacheなどのキャッシュを使用する必要があります。 –