目次
1. 本記事のポイント
- PHPの
require
とinclude
の違いと使い分けを解説 - それぞれの構文の挙動と、実務上の適切な使用場面を紹介
- エラーハンドリングや依存関係管理の観点から比較
2. PHPのrequireとincludeとは?
PHPでは、外部ファイルを読み込んで再利用するためにrequire
およびinclude
を使用します。どちらも、指定されたPHPファイルを読み込み、読み込まれた側の内容をその場に展開する機能を持ちます。
主な用途としては、共通関数群、設定ファイル、テンプレート部品などを分割・再利用する際に使われます。これにより、コードの重複を避け、保守性を高めることができます。
require
とinclude
は構文としては似ていますが、エラー発生時の挙動や使用意図に違いがあり、適切に使い分けることでより堅牢なコード設計が可能となります。
3. 詳細解説
ファイルの読み込みに失敗した場合の挙動の違い
まずは、require
とinclude
の基本的な違いである「読み込み失敗時の挙動」に注目します。
PHP
// include は警告(Warning)を出して処理を続行する
include 'not_found.php';
echo "処理が続行されました\n";
出力:
PHP
Warning: include(not_found.php): failed to open stream...
処理が続行されました
PHP
// require は致命的エラー(Fatal error)を出して処理を停止する
require 'not_found.php';
echo "この行は実行されません\n";
出力:
PHP
Fatal error: require(): Failed opening required 'not_found.php'...
通常のファイル読み込み
PHP
// 共通関数などを読み込む場面
require 'functions.php';
$result = my_function();
echo $result;
ファイルが存在しないと致命的エラーとなるため、必ず存在すべき依存ファイルにはrequire
が適しています。
PHP
// オプション的なファイルの読み込み
include 'optional_config.php';
読み込みに失敗しても続行してよい場合(例:存在すれば設定を上書き)にはinclude
が適しています。
once付きの使い分け
PHP
require_once 'init.php';
include_once 'header.php';
*_once
系は、同じファイルが複数回読み込まれないようにします。クラス定義や初期化処理が重複するとエラーになる場面では、require_once
の使用が一般的です。
4. よくあるミス・誤解・落とし穴
- 存在しないファイルをincludeして気づかないまま進行する:特にログ出力や画面上に警告を出さない設定になっていると、読み込み失敗に気づけません。
- requireの多用でエラー停止が頻発する:開発中に一時的にファイルが不足している場合など、適宜
include
に切り替える柔軟性も必要です。 *_once
を使わずに定義の重複エラーが発生する:共通モジュールを複数箇所で読み込む設計ではrequire_once
が推奨されます。
また、ファイルパスは相対パス/絶対パスの解決に注意が必要です。__DIR__
やrealpath()
を併用して、パスの基準を明示するのが安全です。
5. まとめ
require
はファイルが必須の場合に使用し、読み込み失敗で処理を停止しますinclude
は任意ファイルの読み込みに使用し、失敗しても続行します- 重複読み込みを避けたい場合は
require_once
またはinclude_once
を使用します
依存ファイルの重要度や実行継続の要否に応じて、適切な構文を選ぶことが堅牢なPHPアプリケーション設計につながります