PHPでプログラムを書いていると、独自の設定ファイルが欲しい時があります
独自の設定ファイルの仕様を考え、実際にコードを書いてみます
独自の設定ファイルの仕様を考え、実際にコードを書いてみます
設定ファイルの仕様
- 設定はプログラム内では連想配列とし、保存時はJSON形式にする
- 設定ファイルは人間でも読み書きできるよう、可読性を確保する
- 設定ファイルは公開ディレクトリにも設置できるよう、PHPファイルにする
設定ファイルの読み書きコード
//設定ファイルのパス $設定ファイル = "setting.php"; //設定ファイルの読み込み $設定 = json_decode(file_get_contents($設定ファイル,null,null,5), true); //設定ファイルへの保存 file_put_contents($設定ファイル, "<?php\n".json_encode($設定, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES), LOCK_EX);
連想配列「$設定」に設定項目を代入していきます。
プログラムはUTF-8で記述してください。PHP5.4.0以上に対応しています
設定ファイルの記述例
設定ファイルの記法はJSON形式です。単なる連想配列です。
キー名には日本語が使用でき、値には文字列・数値・配列・連想配列・真偽値・nullなどが持てます。
<?php { "キー1": "何か文字列", "キー2": 2, "キー3": [1,2,3], "キー4": {"4-1":true, "4-2":false, "4-3":null} }
上記の例では $設定[“キー1”] が 何か文字列 になります。
$設定[“キー3”][0] は 1 であり $設定[“キー4”][“4-1”] === true になります
$設定[“キー3”] は配列なので foreach で回すことができます
設定ファイルに記述ミスがあると読み込みは失敗して、$設定 は null になります
JSONを自分で記述する時の注意点
- 文字コードは「UTF-8(BOMなし)」
- (連想)配列の最後の値にはコンマをつけない
- 文字列はダブルクオート”~”で囲む(シングルクオート’~’は駄目)
- 文字列中にダブルクオートを使用したい時は「\”」とエスケープする
- true,false,nullは小文字
- JSONではコメントが使えないので、説明書へのリンクを持つ要素を入れておくなどの工夫が必要