1、概要
require() ステートメントのパフォーマンスは include() と類似しており、どちらも指定されたファイルを読み込んで実行します。違いは、include() ステートメントの場合、ファイルを実行するたびに読み取りと評価を行うことです。一方、require() の場合、ファイルは一度だけ処理されます(実際には、ファイルの内容が require() ステートメントを置き換えます)。つまり、複数回実行される可能性のあるコードがある場合は、require() を使用する方が効率のです。また、毎回異なるファイルを読み込む場合や、一連のファイルを反復処理するループがある場合は、include() ステートメントを使用します。
require() の使用方法は次のとおりです:
require("myfile.php")
このステートメントは通常、PHP スクリプトプログラムの先頭に置かれます。PHP プログラムは実行前に、require() ステートメントが導入するファイルを先に読み込み、それを PHP スクリプトファイルの一部にします。
include() の使用方法は require と同じです。例:
include("myfile.php")
このステートメントは通常、フロー制御の処理セクションに置かれます。
PHP スクリプトファイルは include() ステートメントを読み取ったときに、初めてそれが含むファイルを読み込みます。この方法により、プログラム実行時のフローを簡素化できます。
- incluce必要なときに読み込む
- require最初に読み込む
- _once接尾辞は、既に読み込まれたものは読み込まないことを示します。
PHP システムは PHP プログラムを読み込む際に疑似コンパイルのプロセスがあり、プログラムの実行速度を速めることができます。しかし、include のファイルは依然として解釈実行されます。include したファイルでエラーが発生した場合、メインプログラムはそのまま下のコードを実行し続けます。require したファイルでエラーが発生した場合、メインプログラムも停止します。そのため、含まれるファイルのエラーがシステムにとえる影響が小さい場合(インターフェースファイルなど)は include を使用し、そうでない場合は require を使用します。
require() と include() ステートメントは言語構造であり、本当の関数ではありません。PHP の他の言語構造と同様に、例えば echo() は echo("ab") 形式でも、echo "abc" 形式でも文字列 abc を出力できます。require() と include() ステートメントも丸括弧を付けずに直接パラメータを追加できます。
include_once() と require_once() ステートメントも、スクリプト実行中に指定されたファイルを読み込んで実行します。この動作は include() ステートメントや require() と類似しており、使用方法も同じです。唯一の違いは、そのファイルのコードが既に読み込まれている場合は、再度読み込まれないことです。この2つのステートメントは、スクリプト実行中に同じファイルが複数回読み込まれる可能性がある場合に、関数の再定義や変数の再代入などの問題を避けるため、一度だけ読み込まれることを保証するために使用すべきです。
2、詳細解説
2.1 エラー報告
includeファイルを読み込む際にエラーが発生すると、ヒントが表示され、その後のコードの実行を続けます。
requireファイルを読み込む際にエラーが発生すると、ヒントが表示され、その後のコードの実行を停止します。
例を使って説明します。2つの PHP ファイル、test-include.php と test-require.php を作成します。同じディレクトリに test-nothing.php という名前のファイルが存在しないように注意してください。
test-include.php
test-require.php
アクセスhttp://localhost/test-include.php、test-nothing.php ファイルが見つからなかったため、エラーメッセージが表示されました。同時に、エラーメッセージの下に abc が表示されています。表示されるのはおそらく次のようなものです:
Warning: include(test-nothing.php) [function.include]: failed to open stream: No such file or directory in D:\www\test-include.php on line 2 Warning: include() [function.include]: Failed opening 'test-nothing.php' for inclusion (include_path='.;C:\php5\pear') in D:\www\test-include.php on line 2 abc
http://localhost/test-require.php にアクセスすると、test-nothing.php ファイルが見つからなかったため、エラーメッセージが表示されました。しかし、エラーメッセージの下に abc は表示されません。表示されるのはおそらく次のようなものです:
Warning: require(test-nothing.php) [function.require]: failed to open stream: No such file or directory in D:\www\test-require.php on line 2 Fatal error: require() [function.require]: Failed opening required 'test-nothing' (include_path='.;C:\php5\pear') in D:\www\test-require.php on line 2
2.2 ファイルの参照方法
include() を実行するとき、参照するファイルは毎回読み取りと評価を行う必要があります。require() を実行するとき、参照するファイルは一度だけ処理されます(実際には、実行時に参照するファイルの内容が require() ステートメントを置き換えます)。これらの指示のいずれかを含むコードがあり、それが複数回実行される可能性がある場合は、require() を使用する方が効率のです。毎回異なるファイルを読み込む場合や、一連のファイルを反復処理するループがある場合は、include() を使用します。インクルードしたいファイル名に変数を設定し、パラメータが include() の場合にこの変数を使用できます。
原文リンク:https://blog.csdn.net/shenpengchao/article/details/52326233