PHPのrequire文とは?includeとの違いと使い方を実例で解説
はじめに
PHPのrequire文は、include文とほぼ同じ働きをする構文です。しかし、両者には重要な違いが一つあります。require文の場合、指定したファイルが見つからないと致命的なエラー(Fatal Error)が発生し、現在のスクリプトの実行がその場で停止します。一方、include文ではファイルが見つからなかった場合でも警告(Warning)が出力されるだけで、スクリプトの実行は続行されます。
PHPパーサーは、まずカレントディレクトリ内で対象ファイルを探し、そこで見つからなければphp.iniのinclude_path設定で指定されたディレクトリも検索します。この検索の流れはinclude文と同じです。もし要求されたファイルがカレントフォルダにもinclude_pathのディレクトリにも存在しない場合、PHPパーサーはE_COMPILE_ERRORを発生させ、呼び出し元モジュールの実行を中断します。
それ以外のrequire文の動作は、include文と同一です。
require文の使用例
次の例では、メインのPHPスクリプトからtest.phpを読み込んでいます。
例
<?php echo "inside main script\n"; $var1=100; echo "now calling test.php script\n"; require "test.php"; echo "returns from test.php"; ?> //test.php <?php $var2=200; //accessing $var1 from main script echo $var1+$var2 . "\n"; ?>
実行結果
メインスクリプトをコマンドラインから実行すると、次のような結果が出力されます。
inside main script<br />now calling test.php script<br /><br />300<br />returns from test.php
メインスクリプトで定義した$var1の値が、読み込まれたtest.php側からも参照でき、合計値「300」が正しく表示されていることが分かります。
require失敗時のエラー
次の例では、存在しないファイルを読み込もうとしているため、エラーが発生します。
例
<?php echo "inside main script\n"; $var1=100; echo "now calling nosuchfile.php script\n"; require "nosuchfile.php"; echo "returns from nosuchfile.php"; ?>
実行結果
このコードを実行すると、次のような結果になります。エラー発生後にプログラムが強制終了されている点に注目してください。
inside main script now calling nosuchfile.php script PHP Fatal error: require(): Failed opening required 'nosuchfile.php' (include_path='C:\xampp\php\PEAR') in line 5 Fatal error: require(): Failed
このように、require文は必須ファイルの読み込みに失敗した時点でスクリプト全体を停止させるため、アプリケーションの動作に不可欠な設定ファイルやライブラリを読み込む際に適しています。逆に、なくても処理を継続できる任意のファイルであれば、include文を使う方が安全です。
-
PHPのignore_user_abort()関数の使い方を解説
ignore_user_abort() 関数は、リモートクライアントが実行中のスクリプトを中断できるかどうかを設定するための関数です。長時間かかるバッチ処理やバックグラウンド処理などで、ユーザーがブラウザを閉じたり接続を切断したりした場合でもスクリプトの実行を継続させたいときに役立ちます。 構文 ignore_user_abort(setting) パラメータ setting − true を指定すると、スクリプト内でのユーザーによる中断を無視します(スクリプトは実行を継続します)。デフォルトは false で、この場合クライアントが中断するとスクリプトの実行も停止します。 戻り値 ign
-
JavaScript変数の値をPHPに渡して取得する方法をわかりやすく解説
JavaScript変数をPHPで扱う基本の考え方JavaScriptとPHPは実行されるタイミングが異なります。PHPはサーバーサイドで先に処理され、JavaScriptはその結果を受け取ったブラウザ(クライアントサイド)で後から動作します。そのため、JavaScriptの変数をPHPへ「直接」渡すことはできず、何らかの方法でサーバーへ値を送信する必要があります。ただし、同じページ内でJavaScriptの変数の値を出力・表示するだけであれば、以下のように簡単に実現できます。同じページ内でJavaScript変数の値を表示するサンプルコード<script> var res