PHP8でファイルとJSON操作
ファイル読み書きの基本
PHP8でファイルとJSONを扱う際、最も頻繁に使われる関数は file_get_contents と file_put_contents です。file_get_contents は指定したパスからテキストを読み込み、文字列として返します。逆に file_put_contents は文字列をファイルに書き込みます。これらはシンプルで高速なため、設定ファイルやログの読み書きに最適です。
例として、設定ファイル config.json を読み込むコードは次のようになります。
$json = file_get_contents('config.json');
$settings = json_decode($json, true);
書き込みは同様に簡単です。
$newSettings = ['debug' => true, 'maxItems' => 50];
file_put_contents('config.json', json_encode($newSettings, JSON_PRETTY_PRINT));
JSON操作の実践
JSON操作は json_encode と json_decode で完結します。json_encode は PHP の配列やオブジェクトを JSON 文字列に変換し、json_decode はその逆です。第二引数に true を渡すと連想配列として取得できます。
PHP8 では json_last_error_msg() が追加され、エラー時に詳細なメッセージを取得できるようになりました。これによりデバッグが容易になります。
$data = ['name' => 'Alice', 'age' => 30];
$json = json_encode($data);
$decoded = json_decode($json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
echo 'JSON error: ' . json_last_error_msg();
}
データ保存とシリアライズ
ファイルとJSONを組み合わせることで、軽量なデータ保存が可能です。例えば、ユーザー情報を users.json に保存し、必要に応じて読み込むことで永続化できます。シリアライズは serialize と unserialize もありますが、JSONは人間可読性が高く、他言語との相互運用性も優れています。
データベースを使わずに小規模なアプリケーションで状態を保持したい場合、JSONファイルは最適な選択肢です。ファイルサイズが大きくなるとパフォーマンスに影響が出るため、キャッシュや分割保存を検討してください。
PHP8の新機能と注意点
PHP8 では match 式や readonly クラス、union types などが導入されました。ファイル操作に関しては、file_get_contents と file_put_contents の挙動に大きな変更はありませんが、エラーハンドリングが強化されました。file_get_contents の失敗時に false を返す代わりに例外を投げるオプションもあります。
また、json_encode の JSON_THROW_ON_ERROR フラグを使うと、エラー時に例外が投げられ、エラーハンドリングが簡潔になります。
$json = json_encode($data, JSON_THROW_ON_ERROR);
catch (JsonException $e) {
echo 'Encode error: ' . $e->getMessage();
}
まとめ
PHP8 でファイルとJSONを扱う際は、file_get_contents と file_put_contents、json_encode と json_decode を組み合わせることで、シンプルかつ高速にデータ保存と読み込みが可能です。JSON操作は人間可読性が高く、他言語との連携も容易です。データ保存の際はファイルサイズとパフォーマンスを考慮し、必要に応じてキャッシュや分割保存を検討してください。PHP8 の新機能を活用し、より安全で読みやすいコードを書きましょう。
コメント
コメントを投稿