PHPのrequire_onceステートメントとは?使い方とrequireとの違いを解説
はじめに
PHPのrequire_onceステートメントは、requireステートメントとほぼ同じ働きをします。唯一の違いは、すでに一度読み込まれたファイルは二度と読み込まれないという点です。なお、includeやrequireで読み込まれたファイルについても、その後にrequire_onceを使っても再度読み込まれることはありません。
それ以外の動作は、すべてrequireステートメントと同一です。
require_onceの基本的な使い方
次の例では、メインのPHPスクリプトからtest.phpを読み込んでいます。
コード例
<?php echo "inside main script\n"; echo "now including with require_once test.php script\n"; require_once "test.php"; echo "try to include it again"; require_once "test.php"; ?> //test.php <?php echo "File included\n"; ?>
実行結果
メインスクリプトをコマンドラインから実行すると、次のように出力されます。
inside main script now including with require_once test.php script File included try to include it again
このように、2回目のrequire_once呼び出しではtest.phpの中身が再度実行されていないことが確認できます。これにより、関数定義やクラス定義の重複による「Cannot redeclare」エラーを防ぐことができます。
require_once失敗時のエラー
require_onceもrequireと同様、存在しないファイルを読み込もうとした場合には致命的なエラー(Fatal Error)が発生し、スクリプトの実行が中断されます。
コード例
<?php echo "inside main script\n"; echo "now including with require_once notest.php script\n"; require_once "notest.php"; ?>
実行結果
次のような結果が出力されます。エラー発生時点でプログラムが強制終了される点に注目してください。
inside main script now including with require_once notest.php script PHP Fatal error: require_once(): Failed opening required 'notest.php' (include_path='C:\xampp\php\PEAR') in line 4 Fatal error: require_once(): Failed opening required 'notest.php' (include_path='C:\xampp\php\PEAR') in line 4
include・require・include_once・require_onceの違いまとめ
| ステートメント | ファイルが存在しない場合 | 再読み込み |
|---|---|---|
| include | 警告(Warning)を出し、処理を続行 | あり |
| require | Fatal Errorが発生し、処理を中断 | あり |
| include_once | 警告(Warning)を出し、処理を続行 | なし |
| require_once | Fatal Errorが発生し、処理を中断 | なし |
ライブラリや設定ファイルなど、必ず読み込む必要があり、かつ重複読み込みを避けたいファイルには、require_onceを使用するのが一般的です。
-
PHPのbreakステートメントとは?ループとswitchを抜ける方法を実例で解説
はじめにbreakステートメントは、PHPにおけるループ制御のためのキーワードのひとつです。while、do-while、for、foreachといったループ処理やswitch文の中でプログラムの流れがbreakに到達すると、そのループ(またはswitchブロック)内の残りの処理はすべてスキップされ、ループの直後にある処理へと実行が移ります。基本構文while (expr) { .. .. if (expr1) &n
-
HTMLをPHPの「if」文の中に埋め込む方法をわかりやすく解説
はい、PHPを使えばHTMLを「if」文の中に埋め込むことができます。条件分岐の結果に応じて異なるHTMLを出力したい場面は非常に多く、そのためにいくつかの書き方が用意されています。ここでは代表的な3つの方法を紹介します。 方法1:代替構文(if〜endif)を使う PHPには、コロン「:」と「endif;」を組み合わせた代替構文があります。波括弧「{}」を使わないため、PHPとHTMLが混在するテンプレートでは特に読みやすくなります。 <?php if($condition) : ?> <a href="http