PHPで編集しやすい設定データを保存する最も簡単な方法とは?
PHPで設定ファイルを保存・更新するベストプラクティス
PHPの変数をファイルに保存するだけなら、JSON形式よりもserialize()関数の方が適しています。しかし、「人が直接開いて編集できる設定ファイル」を作りたい場合は、var_export()を使って設定ファイルを書き出し、includeで読み込む方法が最もおすすめです。
この手法は実装が非常にシンプルで、生成されるファイルが可読性に優れているため、プログラムからの自動更新と手動編集の両方に対応できます。以下に具体的なサンプルコードを示します。
設定ファイル:config.php
return array( 'var_1' => 'value_1', 'var_2' => 'value_2', );
設定ファイルは「return 配列」という形式にしておくのがポイントです。こうすることで、include文の戻り値として配列をそのまま受け取れます。
設定を読み込んで更新する:test.php
$config = include 'config.php';
$config['var_2'] = 'value_3';
file_put_contents('config.php', '<?php return ' . var_export($config, true) . ';');ここで重要なのは、var_export() の第2引数に true を指定することです。これにより、値が直接出力されず、文字列として返されるため、file_put_contents() で安全に書き込めます。
なお、上記のtest.phpの代わりに、以下のように変数形式で書き出すことも可能です。
$config = include 'config.php';
$config['var_2'] = 'value_3';
file_put_contents('config.php', '<?php $config = ' . var_export($config, true) . ';');※ 書き出す内容には必ず <?php タグを先頭に付けてください。付け忘れるとPHPファイルとして認識されず、ソースコードがそのまま露出してしまう危険があります。
更新後のconfig.php
スクリプト実行後、設定ファイルは以下のように自動的に書き換わります。
return array( 'var_1' => 'value_1', 'var_2' => 'value_3', );
注意点
- ユーザー入力などをそのまま設定ファイルに書き込むと、任意コード実行につながる恐れがあるため、書き込む値は必ず検証・サニタイズしてください。
- 設定ファイルの書き込みには適切なファイル権限(パーミッション)の設定が必要です。
- キャッシュ機構(OPcache)が有効な環境では、includeの結果が古くなる場合があるため、必要に応じてキャッシュの無効化や再読み込みを検討しましょう。
-
JavaScriptのAtomics.store()関数とは?構文と使い方を実例つきで解説
JavaScriptのAtomicsオブジェクトは、add(加算)やsub(減算)、and・or・xorといったビット演算、さらにload(読み込み)やstore(書き込み)など、さまざまなアトミック操作を静的メソッドとして提供するオブジェクトです。これらのメソッドは、SharedArrayBufferオブジェクトと組み合わせて使用されます。 Atomics.store()関数は、配列内の位置(インデックス)と数値(value)を受け取り、指定された位置にその値を格納します。そして、格納した値をそのまま戻り値として返します。 構文 構文は以下のとおりです。 Atomics.store(type
-
2進数同士の乗算を最速で行う方法 ― 分割統治法による効率的なアルゴリズム
2つの数が2進数(バイナリ)の文字列として与えられたとき、それらの積をいかに速く、効率的に求めるか。本記事ではその手法を詳しく解説します。 この問題は分割統治法(Divide and Conquer)を用いることで、非常に高い効率で解決できます。基本的なアイデアは、それぞれの数を前半と後半の2つの部分に分割し、部分ごとの結果を組み合わせて全体の積を得ることです。 ここで、最初の数 X を Xleft と Xright に、2番目の数 Y を Yleft と Yright に分割すると、積は次のように表されます。 さらに計算をシンプルにするため、上式は次のように変形できます。 この手法は