[PHP]独自の設定ファイルを作成する

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ではコメントが使えないので、説明書へのリンクを持つ要素を入れておくなどの工夫が必要
カテゴリー PHP

コメントをどうぞ~