ホームページ > バックエンド開発 > PHPチュートリアル > これは古いことわざの質問ですが、include と require についてもう一度質問する必要があります。

これは古いことわざの質問ですが、include と require についてもう一度質問する必要があります。

WBOY
リリース: 2016-06-13 12:06:33
オリジナル
870 人が閲覧しました

古い話題です。include と require についてもう一度質問します
マニュアルによると、include と require の唯一の違いは、エラーが発生したときに発生するエラーのレベルの違いです。
しかし、インターネット上の 2 つの違いはこれよりはるかに多く、非常に混乱しています
以下はインターネットから抜粋した意見と質問の一部です
------ --- --------------------------------------------------- --- --------------------------------------------------- ---

Quote
require ステートメントを使用してファイルを呼び出す場合、プログラムが実行されるとすぐに外部ファイルが呼び出されます。 include ステートメントを使用すると、プログラムがステートメントを実行するときにのみ外部ファイルが呼び出されます。

「プログラムが実行されるとすぐに呼び出される」とは何ですか?
<?php<br />//aa.php<br />echo 'aa';<br />require './bb.php';
ログイン後にコピー

私はコンパイルとかそういうことは何も知らないので、とりあえずそう思います。
require の状況についてアドバイスをお願いします。aa.php を実行するときは、aa.php と bb.php を一緒にコンパイルしてから実行します。
include の状況: まず aa.php をコンパイルし、実行してください。インクルードがあり、bb.php をコンパイル -> bb.php を実行します。完了したら、戻って aa.php 以下のコードの実行を続けます。
----------------------------------------------- --- --------------------------------------------------- --- -------
リファレンス
require() インクルードされるファイルには制御構造を含めることはできず、return などのステートメントは使用できません。 require()に含まれるファイル内でreturn文を使用すると処理エラー

が発生するのが非常にわかりにくいです。 aa.php は上記と同じコードで、以下は bb.php です。これは正常に実行されます
<?php<br />//bb.php<br />if(true){<br />	echo 'bb';<br />}<br />return 'abc';
ログイン後にコピー

------ --- --------------------------------------------------- --- --------------------------------
引用
require( ) には、ループ本体内の異なる条件に応じて異なるファイルを含めることはできません。 require() ステートメントは、ステートメント自体を置き換えるために初めて実行されるときにのみ、ステートメントに含まれるファイルの内容を呼び出します。再度実行されるときは、最初に含まれるステートメントのみが実行されます。ただし、 include() ステートメントでは、ループ本体にさまざまなファイルを含めることができます。

この記事では例を挙げて結論を述べています:
引用
上記のコードからわかるように、各ループ時間、プログラムには以下が含まれます。明らかに、これは私たちが望んでいることではありません。このコードが各ループに異なるファイルを含めることを望んでいるのは、Function include()
だけを使用できることがわかります。
<?php<br />//aa.php<br />echo 'aa';<br />$i=1;<br />while($i<3){<br />	require './test' . $i . '.php';<br />	$i++;<br />}
ログイン後にコピー

ただし、私のテストは test1.php と test2.php の両方をインポートできました
<?php<br />echo 'test1';
ログイン後にコピー

<?php<br />echo 'test2';
ログイン後にコピー

出力: aatest1test2
---- -------------------------------------------- ------ -------------------------------------------- ------ -----------------------
Quotation
include() が利用可能 条件付き包含関数、require () は無条件包含関数です。これは、条件制御ステートメントで require を使用すると、条件が false であっても、その条件が導入されることを意味します。インポートされたファイルは目に見える役割を果たさず、プログラムの負担が増えるだけです。

<?php<br />//aa.php<br />if(false){<br />	require './bb.php';<br />}
ログイン後にコピー

そうですか? bb.php が導入されていることを証明するにはどうすればよいですか?
----------------------------------------------- --- --------------------------------------------------- --- -----------------------
また、エラー報告について質問がありますが、マニュアルにはこう書いてあります

<?php<br />//aa.php<br />include 'nofile.php';<br />//require 'nofile.php';
ログイン後にコピー

エラーは次のように報告されます:
Quote
警告: include(nofile.php) [function.include]: ストリームを開けませんでした: D にそのようなファイルまたはディレクトリはありません:wwwApache2.2htdocsphp5 時代には、エラーが発生したときに生成されるエラーのレベルの違いのみが存在します
-----解決策のアイデア------ - ----
IT の知識は更新が速すぎます。すべては公式マニュアルに基づいて行う必要があります。PHP のソースコードを勉強して、それがどのように扱われるかを確認することもできます。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート