ホームページ php教程 php手册 require()、include()、require_once()およびinclude_once()区别

require()、include()、require_once()およびinclude_once()区别

Jun 13, 2016 pm 12:29 PM
include once require 導入 違い できる そして 勉強 置く 比較する 声明

読者が比較して学べるように、これら 2 つの文を一緒に紹介します。
1.require() ステートメント
require() ステートメントは、C 言語の include() ステートメントと同様に、ステートメント自体ではなくファイルを指定するために使用されます。 PHP 構成ファイル php.ini 内の URL fopen ラッパーがオンになっている場合 (デフォルトでオンになっています)、URL を使用してファイルの場所を指定し、リモート ファイル呼び出しを行うことができます。
1 つは、require() ステートメントと include() ステートメントを使用するときに特別な注意を払うことです。つまり、インクルードされたファイルでは、プロセッサは HTML モードに従ってコンテンツを解釈し、インクルードされたコンテンツを処理した後、PHP モードに戻ります。したがって、インクルードされるファイルで PHP 構文を使用する必要がある場合は、正しい PHP 開始タグと終了タグを使用してこれらのステートメントをインクルードする必要があります。
require() と include() は PHP の言語機能であり、関数ではありません。これらは多くの点で関数とは異なります。
例: require() に含まれるファイルには制御構造を含めることはできず、return などのステートメントは使用できません。 require() に含まれるファイルで return ステートメントを使用すると、処理エラーが発生します。
include() ステートメントとは異なり、require() ステートメントは、ステートメントが実行されるかどうかに関係なく、含まれるファイルの内容を無条件に読み取ります。したがって、異なる条件に従って異なるファイルをインクルードする場合は、include() ステートメントを使用する必要があります。もちろん、require() の位置にあるステートメントが実行されない場合、require() に含まれるファイル内のステートメントも実行されません。
require() では、ループ本体内のさまざまな条件に応じて異なるファイルを含めることはできません。 require() ステートメントは、ステートメント自体を置き換えるために初めて実行されるときにのみ、ステートメントに含まれるファイルの内容を呼び出します。再度実行されるときは、最初に含まれるステートメントのみが実行されます。ただし、 include() ステートメントでは、ループ本体にさまざまなファイルを含めることができます。
require() ステートメント内の変数は、require() ステートメントが配置されている場所の変数スコープを継承します。 require() ステートメントの場所でアクセスできるすべての変数は、require() ステートメントに含まれるファイル内でアクセスできます。 require() ステートメントが関数内にある場合、インクルードされたファイル内のステートメントは関数内で定義されているものと同等になります。
require() ステートメントは、PHP プログラムが実行される前に、require で参照されるファイルを読み取るため、通常、require はプログラムの先頭に配置されます。したがって、require ステートメントは少し強力であるという事実に特別な注意を払う必要があります。プログラムが参照ファイルを本当に必要とするかどうかに関係なく、require ステートメントを使用する限り、参照ファイルが含まれてしまいます。この関数を使用して条件制御ステートメントにインクルードすると、条件が true でなくても、参照されたファイルがインクルードされます。ゾンビが形成されると、操作中に目に見える影響はありませんが、明らかに負担が増加しますので、特に注意してください。 require ステートメントを使用してインクルード エラーが発生した場合、プログラムはエラー メッセージを出力して実行を停止します。 !

require() ステートメントにファイルの URL を宣言することでリモート ファイルが含まれており、リモート サーバーが PHP コードに従ってファイルを解釈する場合、ローカル PHP ファイルに含まれるコンテンツは処理の結果です。リモートサーバー上で。例:

コードをコピーします コードは次のとおりです:


/*
この例では、some_server サーバーが想定されています。 .txt ファイルを解釈せずに、.php ファイルを解釈できます。リモート ファイル
には変数 $varfirst と $varsecond が必要です
*/
/* は正しく実行できません。リモート サーバーは .txt ファイルを処理しません*/
require("http:// some_server/file .txt?varfirst=1&varsecond=2");

/*不正解です。file.php ファイルはローカル マシン上でのみ見つかります*/
require("file.php?varfirst) =1&varsecond=2 ");

/*正しいステートメント*/
require("http://some_server/file.php?varfirst=1&varsecond=2");

$ varfirst=1 ;
$varsecond=2;
require("file.txt"); /*正しいステートメント*/
>

元々 php3.0 では、require() に含まれるファイルで return ステートメントを使用できますが、条件として、return ステートメントは {} 内に出現できず、インクルードされたファイルのグローバル スコープ内に出現する必要があります。この require() の機能は php4.0 で廃止されましたが、 include() を使用して実装することができます。

2.include() ステートメント
include() ステートメントと require() ステートメントには多くの類似点があります。上記の require() ステートメントで明示的に記述されておらず、include() に適用できない部分を除いて、require() ステートメントの関数は include() ステートメントに完全に適用できます。以下では、require() ステートメントでは使用できない include() ステートメントの機能と特徴について説明します。
include ステートメントは、実行時にインクルードされるファイルのみを読み取ります。エラー処理を容易にするために、include ステートメントを使用します。include エラーが発生した場合、プログラムはエラー メッセージが表示されますが、プログラムは実行を続行します。
PHP プロセッサは include() ステートメントに遭遇するたびにそれを再処理するため、条件付き制御ステートメントやループ ステートメントで include() を使用して、さまざまな状況に応じてさまざまなファイルをインクルードできます。
例:

コードをコピー コードは次のとおりです:


$files =array(' first.php','first.php','third.php');
for($i=0;$i{
include $files [$i];
}
?>


return ステートメントは、php3.0 および php4 の include() ステートメントに含まれるファイルで使用できます。 .0 を実行すると値が返され、インクルードされたファイル以下のコンテンツの実行が停止されます。ただし、php3.0 と php4.0 では、そのような状況の処理方法が異なります。 php3.0 では、return ステートメントを関数内にしない限り、{} 内に含めることはできません。これは、return ステートメントがファイルの戻り値ではなく関数の戻り値を表すためです。 php4.0 では、そのような制限はなく、関数の戻り値と同様に、ファイル内で数値を返すこともできます。このようなステートメントは通常、

php3.0 でエラーを報告します。以下は例です:
インクルードされたファイルが test.inc で、メイン ファイル main.php がディレクトリにあると仮定します。 test.inc の内容は次のとおりです。
test.inc

コードをコピー コードは次のとおりです:


echo "復帰前
n";
if(1)
{
return
}
echo "復帰後
;n";
?>


main.php ファイルに次のステートメントが含まれているとします:

コードをコピーします コードは次のとおりです:


$retval=include('test.inc');
echo "返されたファイル:'$retval'?> ;


php3.0 インタープリタは 2 行目でエラーを報告し、include() ステートメントの戻り値を取得できません。しかし、php4.0 では、次の結果が得られます:
リターン前
返されたファイル: '27'
以下では、main.php が次のように変更されたと仮定します:

コードをコピーします コードは次のとおりです:


include('test.inc');
echo "Back in main.html
n ";
?>

php4.0 の
の出力は次のとおりです:
リターンの前
main.html に戻る
php5 の
0 での出力結果も次のようになります:
リターンの前
main.html に戻る

php3.0 での出力結果は次のようになります:
リターンの前
27メインに戻ります。html

解析エラー:/apache/htdocs/phptest/main.html の 5 行目で解析エラーが発生しました。

上記のエラーは、return ステートメントが { 内にあるために発生します。 } 関数内ではありません。 {} を削除して test.inc の最外層に配置すると、出力結果は次のようになります。
return の前
27main.html に戻る
27 が表示される理由は、php3 にあるためです。 .0 Include() リターンはサポートされていません。

3. require_once() および include_once() ステートメント
require_once() および include_once() ステートメントは、それぞれ require() ステートメントおよび include() ステートメントに対応します。 require_once() および include_once() ステートメントは主に、複数のファイルをインクルードする必要がある場合に使用され、同じコード部分をインクルードすることによって発生する関数または変数の繰り返し定義でのエラーを効果的に回避できます。例: 2 つのファイル util.inc と Fool.inc を作成する場合、プログラム コードは次のとおりです:
util.inc:

コードをコピー コード


define(PHPVERSION,floor(phpversion()));
echo "GLOBALS ARE NICE
n"; GoodTea()
{
return "烏龍茶おいしいです!"
}
?>

and folk.inc:

コードをコピー コードは次のとおりです:


require ("util.inc");
function showVar($var)
{
if(PHPVERSION==4)
{
print_r($var);
}
else
{
var_dump($var);
}


次に、これら 2 つのファイルを error_require.php に含めます。



コードをコピーします コードは次のとおりです。

< ?php

require("fool.inc");
require("util.inc");//この文はエラーを生成します
$foo=array("1",array("complex) "," クォータニオン"));
echo "これはまた util.inc を必要としていますが、これも
n";
echo "fool.incn で必要です";
echo "goodTea を実行しています:" .goodTea( )."
n";
echo "foo:
n";
showVar($foo)>; 🎜>error_require.php を実行すると、出力は次のようになります:
GLOBALS ARE NICE
GLOBALS ARE NICE

致命的なエラー: util.inc の 4 行目で GoodTea() を再宣言できません


if require() ステートメントの代わりに require_once() ステートメントを使用すると、上記のエラーは発生しません。 error_require.php と folk.inc の require() ステートメントを require_once() ステートメントに変更し、その名前を error_require_once.php に変更しました。結果は次のようになります:
GLOBALS ARE NICE
これは再び util.inc を必要とします。これは、fool.inc にも
必要です。 running GoodTea:Olong tea はおいしいです!
Printing foo:
Array([0] => 1 [1] => Array ([0] =>) ; complex [1] = quaternion))

include_once() ステートメントの構文は include() ステートメントと似ていますが、主な違いは、ファイルを複数インクルードすることによって生じる関数または変数の定義の繰り返しを避けることです。回。

require_once ステートメントには参照チェーンがあり、ファイルがプログラムに 1 回だけ追加されることが保証され、変数値と関数名の競合が回避されます。

require_once ステートメントと同様に、include_once ステートメントは include の機能を拡張します。プログラムの実行中に、指定されたファイルがインクルードされます。そのファイルから参照されるプログラムが以前にインクルードされている場合、include_once() はそれを再度インクルードしません。つまり、同じファイルは 1 回しか参照できません。

include_once() ステートメントは、スクリプトの実行中に指定されたファイルをインクルードし、実行します。この動作は include() ステートメントに似ていますが、唯一の違いは、ファイル内のコードが既にインクルードされている場合、再度インクルードされないことです。このステートメントの名前が示すように、このステートメントは 1 回だけ含まれます。

include_once() は、スクリプトの実行中に同じファイルが複数回インクルードされる可能性があり、関数の再定義や変数の再割り当てなどの問題を避けるために、ファイルが 1 回だけインクルードされるようにしたい場合に使用する必要があります。

require_once() と include_once() の使用例については、最新の PHP ソース配布パッケージの PEAR コードを参照してください。

戻り値は include() と同じです。ファイルが含まれている場合、この関数は TRUE を返します。

注: include_once() は PHP 4.0.1pl2 で新たに追加されました。

注: 大文字と小文字を区別しないオペレーティング システム (Windows など)

における include_once() および require_once() の動作は望ましくない可能性があることに注意してください。
例: Windows では include_once() は大文字と小文字を区別しません



コードをコピーします

コードは次のとおりです:

include_once("a.php"); // これには a.php が含まれます include_once("A.php"); // これは Windows 上でも a.php を含みます! 4 のみ) ?>


この動作は PHP 5 で変更されました。最初にパスが正規化されるため、C:PROGRA~1A.php と C:Program Filesa が実装されます。 php は同じです。インクルードされるのは 1 回だけです。

インクルードするファイルが存在しない場合、include はプロンプトを通知し、次のステートメントの実行を続行し、require は致命的なエラーを表示して終了します。

win32 プラットフォームでは、これらは最初にインクルードされてから実行されるため、ディレクトリの混乱を引き起こす可能性があるため、インクルードされたファイルに include または require ステートメントを含めないことをお勧めします。 Linux では状況が異なる可能性がありますが、まだテストしていません。


ファイルを複数回インクルードしたくない場合は、include_once または require_once## を使用してドキュメント データの読み取りと書き込みを行うことができます。



コードをコピー

コードは次のとおりです。

function r($file_name) { $ filenum=@fopen($file_name,"r"); @flock($filenum,LOCK_SH)

$file_data=@fread($filenum,file_name($file_name)); @fclose( $filenum);

return $file_data;
}
function w($file_name,$data,$method="w"){
$filenum=@fopen($file_name, $method) ;
flock($filenum,$data);
fclose($filenum);



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Deepseek R1とV3バージョンの違いは何ですか Deepseek R1とV3バージョンの違いは何ですか Feb 19, 2025 pm 03:24 PM

DeepSeek:R1とV3バージョンの詳細な比較は、最高のAIアシスタントを選択するのに役立ちます! Deepseekにはすでに数千万人のユーザーがいて、そのAIの対話機能は好評を博しています。しかし、R1およびV3バージョンに面しているときに混乱していますか?この記事では、2つの違いを詳細に説明して、最適なバージョンを選択するのに役立ちます。 DeepSeeKR1とV3バージョンのコアの違い:V3バージョンの設計目標は、複雑な問題推論、ディープロジック分析、多機能大型言語モデルに焦点を当てており、スケーラビリティと効率アーキテクチャ、パラメーター強化学習最適化アーキテクチャ、パラメータースケール1.5に焦点を当てています。 10億から700億人のMOEハイブリッドの専門家アーキテクチャ、合計パラメーターは6710億にもなり、各トークンは370億を活性化します

DeepSeek使用のためのFAQの概要 DeepSeek使用のためのFAQの概要 Feb 19, 2025 pm 03:45 PM

Deepseekai ToolユーザーガイドとFAQ Deepseekは、強力なAIインテリジェントツールです。 FAQ:異なるアクセス方法の違い:Webバージョン、アプリバージョン、API呼び出しの間に機能に違いはありません。アプリは、Webバージョンのラッパーにすぎません。ローカル展開は蒸留モデルを使用します。これは、DeepSeek-R1のフルバージョンよりもわずかに劣っていますが、32ビットモデルには理論的には90%のフルバージョン機能があります。居酒屋とは何ですか? Sillytavernは、APIまたはOllamaを介してAIモデルを呼び出す必要があるフロントエンドインターフェイスです。壊れた制限とは何ですか

ビットコインには株式がありますか? ビットコインには株式がありますか? Mar 03, 2025 pm 06:42 PM

暗号通貨市場は活況を呈しており、リーダーとしてのビットコインは多くの投資家の注目を集めています。多くの人が好奇心が強い:ビットコインには在庫がありますか?答えはノーです。ビットコイン自体は株式ではありませんが、投資家はさまざまなチャネルを通じてビットコイン関連の資産に間接的に投資することができます。これについては、この記事で詳しく説明します。ビットコイン投資の代替品:ビットコインに直接投資する代わりに、投資家はビットコイン市場に参加できます:ビットコインETF:これは、資産ポートフォリオにビットコインまたはビットコイン先物契約が含まれている株式取引市場で取引されています。これは、ビットコインを直接保持することなく、在庫投資に慣れている投資家にとって比較的便利なオプションです。ビットコインマイニングカンパニー株:これらの企業のビジネスはビットコインマイニングとビットコインの保有です

市場前取引とアフターマーケット取引の違いは何ですか?市場前と市場外の取引の違いの詳細な説明 市場前取引とアフターマーケット取引の違いは何ですか?市場前と市場外の取引の違いの詳細な説明 Mar 03, 2025 pm 11:54 PM

従来の金融市場では、市場前および市場外の取引とは、通常の取引期間以外の取引活動を指します。暗号通貨市場は24時間取引されていますが、Bitgetのようなトレーディングプラットフォームは、同様の機能、特に株式と暗号通貨を同時に取引する包括的なプラットフォームも提供しています。この記事では、市場前と市場の取引の違いを明確にし、通貨価格への影響を調査します。市場前取引とアフターマーケット取引の4つの大きな違い:市場前取引とアフターマーケット取引と通常の取引期間の主な違いは、取引時間、流動性、価格変動、取引量:取引時間:取引時間:公式取引が開始される前に行われる4つの側面にあります。流動性:営業時間前後の取引の流動性は低く、トレーダーはほとんどありません。

なぜビテンサーはAIトラックの「ビットコイン」と言われているのですか? なぜビテンサーはAIトラックの「ビットコイン」と言われているのですか? Mar 04, 2025 pm 04:06 PM

元のタイトル:Bittensor = Aibitcoin:S4MMYETH、分散型AI研究元の翻訳:Zhouzhou、BlockBeats編集者注:この記事では、Bockchain Technologyを通じて中央集権的なAI企業の独占を破り、オープンおよび共同AI Ecosemsytemを促進することを望んでいます。 Bittensorは、さまざまなAIソリューションの出現を可能にし、Tao Tokensを通じてイノベーションを刺激するサブネットモデルを採用しています。 AI市場は成熟していますが、両節は競争リスクに直面し、他のオープンソースの対象となる場合があります

韓国のビットコインと国内のビットコインに違いはありますか? 韓国のビットコインと国内のビットコインに違いはありますか? Mar 05, 2025 pm 06:51 PM

ビットコインの投資ブームは、世界初の分散型デジタル資産であるため、増加し続けています。中国はかつてビットコインの最大の市場でしたが、政策の影響は取引制限につながりました。今日、韓国は世界の主要なビットコイン市場の1つになっており、投資家はITとその国内ビットコインの違いに疑問を投げかけています。この記事では、両国のビットコイン市場間の違いに関する詳細な分析を行います。韓国と中国のビットコイン市場の違いの分析。たとえば、2024年10月下旬、韓国のビットコインの価格はかつてでした

垂直プロキシ:アプリケーションシナリオと暗号化の破壊的可能性の解釈ネイティブプロキシ 垂直プロキシ:アプリケーションシナリオと暗号化の破壊的可能性の解釈ネイティブプロキシ Mar 04, 2025 am 10:21 AM

人工知能エージェント(AIAGENTS)は、大企業から中小企業まで、企業の日常業務に急速に統合されており、販売、マーケティング、金融、法律、IT、プロジェクト管理、ロジスティクス、顧客サービス、ワークフローオートメーションなど、ほとんどすべての分野を使用し始めています。私たちは、データの手動処理の時代から、繰り返しタスクの実行、Excelテーブルを使用してAIエージェントが24時間体制の自律操作の時代に移動しています。これにより、効率が向上するだけでなく、コストが大幅に削減されます。 Web2のAIエージェントのアプリケーションケース:Ycombinatorの視点Apten:AIとSMSテクノロジーを組み合わせた販売およびマーケティング最適化ツール。 Bildai:建築青写真を読むことができるモデル、

Pepeは大規模に購入して売り切れ、Mutmは2025年により賢い投資ですか? Pepeは大規模に購入して売り切れ、Mutmは2025年により賢い投資ですか? Mar 03, 2025 pm 07:09 PM

Pepeの急増の後、Mutmは2025年により安定した投資選択になることができますか? Pepe(Pepe)は初期の投資家を収益性を高めましたが、その暴力的な価格の変動は、多くの人々がその長期的な見通しに疑問を抱かせました。ミーム通貨市場が乱流を続けているため、トレーダーはより基本的な利点を持つプロジェクトに焦点を合わせ始めており、Mutuumfinance(MUTM)もその1つです。これは、実際の金融アプリケーションに焦点を当てた分散型貸出プラットフォームです。投機的な投機に依存しているPepeとは異なり、MUTMは、ユーザーが受動的収入を借りて獲得できる構造化されたdefiエコシステムを構築します。その前販売は100万米ドルを超えており、トークンの販売率の第1フェーズは97%を超え、早期投資

See all articles