3

include と require の違いの 1 つは、include ステートメントが検出された場合にインクルード ファイルのみをインクルードするのに対し、require コードが require コードに到達していない場合でも、require ステートメントをホストするファイルにファイルをインクルードすることです。実行の流れ。

これはどのように影響を与えることができますか。結局のところ、次のようなファイルがあるとします。

<?php
  echo __LINE__;
?>

そのようなインクルードファイルを含むファイル内の位置に行を表示する代わりに、出力は常に 3 になります。

4

6 に答える 6

7

私の知る限り、これは単に真実ではありません。コード内でその行に到達していない場合require、ファイルは確実にインクルードされません。

状態に関するPHPマニュアルrequire

require失敗すると致命的なE_COMPILE_ERRORレベルのエラーが生成されることをinclude 除いて、と同じです。

(私が追加した「除く」を強調)

于 2012-07-10T20:12:32.313 に答える
2

私の知る限り、それは require の仕組みではありません。唯一の実際的な違いは、require はファイルをインクルードできない場合にスクリプトを終了させ、include は単に警告をスローして実行を続けることです。

非常に重要なイディオムは、宣言された動作が真実ではないことに依存します: 条件付きの必要なファイル。

if(is_secure_page()) {
  require "security.php";
}
于 2012-07-10T20:13:11.363 に答える
2

と の両方が、実行フローで到達した時点でファイルを含めますrequireinclude

これに対する簡単なテスト ケースは次のとおりです。

if (false) {
  require_once("Nonexistent.php");
}
echo "I'm doing SCIENCE and I'm still alive.\n";
于 2012-07-10T20:19:22.433 に答える
1

require、またはさらに良いのは、必要なライブラリなど、アプリケーションで実際に必要なrequire_onceコードを含めたい場合にのみ使用することです。およびその兄弟は、サイドバーや接線コンテンツをロードする場合など、スクリプトの実行にインクルード ファイルが必要ない場合にのみ使用してください。includeinclude_once

2 つのステートメントの唯一の実際の違いは、ファイルが見つからずrequire、致命的なエラーがスローさincludeれ、警告がスローされ、喜んで処理を続行することです。

と の両方がまったく同じ方法でロードおよび解析されるrequireと思います。特定のコンテキストでファイルをロードするinclude場合、 .requireinclude

于 2012-07-10T20:17:57.403 に答える
1

私は個人的に常にrequire_once. またinclude、何かを含めて「試して」みたい場合は、非表示にする必要があるという警告をスローします。if (file_exists($file)) require_once $file;しかし、それはただの悪いプログラミングの練習includeです。

だから私の意見では、requireはるかに勝ちます。

PS: 秒単位で打ちのめされた!

于 2012-07-10T20:18:40.783 に答える
1

ミッション クリティカルなアプリケーションを実行していて、1 秒あたり 1 ドルを失うとします。また、一部のライブラリは特定のケースでのみ使用され、ビジネス フローには影響しません。これらのオプションのライブラリには、おそらくinclude_onceを使用する必要があります。ファイルが存在しない場合、requireは致命的なエラーでアプリケーションの実行を停止するためです。

于 2012-07-10T20:18:57.867 に答える