それらの間に違いはありますか?それらの使用は好みの問題ですか?どちらを使用しても利点はありますか?どちらがセキュリティに優れていますか?
require
のページの詳細なPHPマニュアルで説明されている違いを見つけます:
require
はinclude
と同じですが、失敗した場合は致命的なE_COMPILE_ERROR
レベルエラーも生成します。言い換えると、includeは警告(E_WARNING
)のみを出力し、スクリプトの続行を許可しますが、スクリプトを停止します。
例については、 @ efritzの回答 を参照してください
ファイルをロードできない場合、require
はPHP致命的エラーをスローします。 (実行停止)
include
は、ファイルをロードできない場合に警告を生成します。 (実行は継続)
ここにニースがあります includeとrequireの違いのイラスト :
ファイルが存在しない場合など、ファイルをロードせずにスクリプトを続行することを気にせず、警告エラーメッセージが表示されたまま生きることができる場合は、include
を使用します。
require
を使用すると、指定したファイルをロードできない場合にスクリプトが停止し、致命的なエラーがスローされます。
他の人が指摘したように、唯一の違いは、requireが致命的なエラーをスローし、キャッチできる警告を含めることです。どちらを使用するかについては、含めるように固執することをお勧めします。どうして?警告をキャッチして、エンドユーザーに有意義なフィードバックを生成できるためです。検討する
// Example 1.
// users see a standard php error message or a blank screen
// depending on your display_errors setting
require 'not_there';
// Example 2.
// users see a meaningful error message
try {
include 'not_there';
} catch(Exception $e) {
echo "something strange happened!";
}
NB:ここで説明するように、たとえば2を機能させるには、例外へのエラーハンドラをインストールする必要があります http://www.php.net/manual/en/class.errorexception.php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
<?PHP
echo "Firstline";
include('classes/connection.php');
echo "I will run if include but not on Require";
?>
コードを使用した非常に簡単な実用例最初のエコーが表示されます。 includeまたはrequireを使用しても、includeまたはrequireの前に実行されるためです。
結果を確認するには、コードの2行目で意図的にファイルへの間違ったパスを指定するか、ファイル名にエラーを入れます。したがって、表示される2番目のエコーは、requireとincludeのどちらを使用するかに完全に依存します。
requireを使用すると、2番目のエコーは実行されませんが、includeを使用すると、どんなエラーが発生しても2番目のエコーの結果が表示されます。