検索
ホームページバックエンド開発PHPチュートリアルPHP の include、require、include_once、require_once の違いを理解する

Understanding the Differences Between include, require, include_once, and require_once in PHP

PHP を使用するときに遭遇する一般的なタスクの 1 つは、外部ファイルをスクリプトに組み込むことです。 PHP は、このタスクのためにいくつかのメカニズム、つまり include、require、include_once、require_once を提供します。これらのステートメントは、コードをモジュール化し、アプリケーションのさまざまな部分でファイルを再利用できるようにするために不可欠です。ただし、効率的で保守可能な PHP コードを作成するには、これらのコマンドの違いを理解することが重要です。

この記事では、これらのステートメントのそれぞれについて説明し、その動作を説明し、相違点を強調し、実際の使用例を示します。


1. include ステートメント

インクルードとは何ですか?

PHP の include ステートメントは、スクリプトの実行中に指定されたファイルをインクルードして評価するために使用されます。ファイルが見つかった場合は、そのファイルが一度組み込まれ、スクリプト内のその時点で実行されます。

インクルードの動作:

  • 指定されたファイルが見つからない場合、PHP は 警告 (E_WARNING) を発行しますが、スクリプトの実行は続行されます。
  • 警告メッセージには、見つからなかったファイルのパスが含まれます。
  • スクリプトの実行は停止されないため、インクルードされたファイルが重要でない場合、スクリプトは中断されることなく実行を継続できます。

インクルードの使用例:

ファイルがプログラムのフローにとって重要ではなく、ファイルが見つからない場合でもスクリプトを続行できる場合に include を使用できます。これは、オプションのテンプレート、構成ファイル、ログ記録メカニズムなどの必須ではないファイルによく使用されます。

例:

// Including a non-critical file
include 'header.php';  // This will continue if header.php is missing
echo "This part of the script will run regardless of the missing header file.";

インクルードを使用する理由

  • ページ テンプレートや必須ではない設定などのオプション ファイルを含める場合に便利です。
  • ファイルをインクルードできない場合でも、スクリプトが機能し続けることを許可します。

2. require ステートメント

必須とは何ですか?

include と同様に、require ステートメントは、PHP でファイルをインクルードして評価するために使用されます。ただし、主な違いはエラーの処理方法です。

require の動作:

  • ファイルが見つからない場合、またはファイルを含めることができない場合、PHP は 致命的エラー (E_COMPILE_ERROR) を発行し、スクリプトは実行を直ちに停止します。
  • インクルードとは異なり、ファイルが見つからない場合、重要な場合はスクリプトが停止します。

require の使用例:

インクルードされたファイルがアプリケーションの機能にとって必須の場合は、require を使用する必要があります。たとえば、定数を設定したり、アプリケーションの重要な機能を含む構成ファイルは、require に含める必要があります。ファイルが見つからない場合、実行を続行すると、予期しない動作や障害が発生する可能性があります。

例:

// Including a non-critical file
include 'header.php';  // This will continue if header.php is missing
echo "This part of the script will run regardless of the missing header file.";

require を使用する理由

  • 設定ファイルやデータベース接続スクリプトなど、インクルードされたファイルがスクリプトの機能に不可欠な場合。
  • スクリプトの後半で予期しないエラーやクラッシュが発生するのを避けるために、ファイルが見つからない場合はスクリプトの実行が停止するようにしたいと考えています。

3. include_once ステートメント

include_once とは何ですか?

include_once ステートメントは include ステートメントに似ていますが、重要な違いが 1 つあります。コード内で include_once ステートメントが何回呼び出されても、ファイルはスクリプトの実行中に 1 回だけインクルードされることが保証されます。

include_once の動作:

  • include と同じようにファイルをインクルードしようとします。
  • ファイルが以前に現在のスクリプトに既に組み込まれている場合、そのファイルは再び組み込まれません。
  • ファイルが見つからない場合は、include と同様に 警告 が発行されますが、スクリプトは実行を続けます。

include_once の使用例:

通常、インクルードを呼び出す回数に関係なく、一度だけインクルードする必要がある関数またはクラス定義を含む可能性のあるファイルをインクルードする場合は、 include_once を使用します。たとえば、クラスを複数回定義するファイルをインクルードすると、再定義エラーが発生する可能性があるため、インクルードしないでください。

例:

// Including a critical file
require 'config.php';  // This will stop the script if config.php is missing
echo "This will not run if config.php is not found.";

include_once を使用する理由

  • ファイルを複数回含めることを防ぎます。
  • ユーティリティ ファイルや構成ファイルなど、一度だけ含める必要があるファイルに関数、クラス、または定数を定義する場合に便利です。

4. require_once ステートメント

require_once とは何ですか?

require_once ステートメントは require と同様に機能しますが、スクリプトの実行中にファイルが 1 回だけ含まれるようにするという追加の動作が異なります。

require_once の動作:

  • require と同じようにファイルをインクルードしようとします。
  • ファイルが既にインクルードされている場合は、再度インクルードされないため、クラス、関数、または定数の再定義エラーが防止されます。
  • ファイルが見つからない場合は、require と同様に、致命的なエラーが発生し、スクリプトの実行が停止されます。

require_once の使用例:

データベース接続ファイル、構成ファイル、クラス定義など、一度だけ含める必要がある必須ファイルを含める場合は、require_once を使用する必要があります。これは、再定義のリスクなしに重要なファイルが 1 回だけ組み込まれるようにするための最も堅牢で安全な方法です。

例:

// Including a non-critical file
include 'header.php';  // This will continue if header.php is missing
echo "This part of the script will run regardless of the missing header file.";

require_once を使用する理由

  • 構成ファイルやクラス定義など、スクリプトにとって重要なファイルをインクルードし、それらのファイルが 1 回だけインクルードされるようにする必要がある場合。
  • ファイルが複数回インクルードされないようにすることで、再定義エラーを防ぎます。

include、require、include_once、require_once の比較

Statement Behavior if File is Missing Includes Only Once Error Type
include Warning, continues script No Warning (E_WARNING)
require Fatal error, halts script No Fatal error (E_COMPILE_ERROR)
include_once Warning, continues script Yes Warning (E_WARNING)
require_once Fatal error, halts script Yes Fatal error (E_COMPILE_ERROR)

重要なポイント:

  • include: ファイルがオプションであり、ファイルが見つからなくてもスクリプトが停止しない場合に使用します。
  • require: ファイルが重要な場合に使用し、ファイルが見つからない場合はスクリプトを停止する必要があります。
  • include_once: ファイルはオプションですが、重複を避けるために一度だけ含める必要がある場合に使用します。
  • require_once: ファイルが重要であり、一度だけ含める必要がある場合に使用します。

結論

適切なインクルード ステートメントの選択は、インクルードするファイルの性質と強制したい動作によって異なります。 require と require_once は通常、重要なファイルに使用されますが、include と include_once は重要でないファイルに適しています。これらのステートメントの 1 回バージョンを使用すると、複数のインクルードが含まれる場合の再定義エラーなどの問題を防ぐことができます。

これらの違いを理解することで、より信頼性が高く、モジュール化された、エラーのない PHP コードを作成でき、ファイルが欠落している場合や重複している場合でもアプリケーションが正しく機能することが保証されます。

以上がPHP の include、require、include_once、require_once の違いを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
トラフィックの高いウェブサイトのPHPパフォーマンスチューニングトラフィックの高いウェブサイトのPHPパフォーマンスチューニングMay 14, 2025 am 12:13 AM

thesecrettokeepingaphp-poweredwebsterunningsmootlyunderheavyloadinvolvesseveralkeystrategies:1)emform opcodecoduceSciptionexecutiontime、2)aatabasequerycachingwithiThing withiThistolessendavasoload、

PHPでの依存関係注射:初心者向けのコード例PHPでの依存関係注射:初心者向けのコード例May 14, 2025 am 12:08 AM

コードをより明確かつ維持しやすくするため、依存関係が関心(DI)に注意する必要があります。 1)DIは、クラスを切り離すことにより、よりモジュール化されます。2)テストとコードの柔軟性の利便性を向上させ、3)DIコンテナを使用して複雑な依存関係を管理しますが、パフォーマンスの影響と円形の依存関係に注意してください。

PHPパフォーマンス:アプリケーションを最適化することは可能ですか?PHPパフォーマンス:アプリケーションを最適化することは可能ですか?May 14, 2025 am 12:04 AM

はい、最適化されたAphPossibleandessention.1)CachingingusapCutoredatedAtabaseload.2)最適化、効率的なQueries、およびConnectionPooling.3)EnhcodeCodewithBultinctions、Avoididingglobalbariables、およびUsingopcodeching

PHPパフォーマンスの最適化:究極のガイドPHPパフォーマンスの最適化:究極のガイドMay 14, 2025 am 12:02 AM

keyStrategIestsoSificlyvoostphpappliceperformanceare:1)useopcodecachinglikeToreexecutiontime、2)最適化abaseの相互作用とプロペラインデックス、3)3)構成

PHP依存性噴射コンテナ:クイックスタートPHP依存性噴射コンテナ:クイックスタートMay 13, 2025 am 12:11 AM

aphpDependencyInjectionContaineriSATOULTAINATINAGECLASSDEPTINCIES、強化測定性、テスト可能性、および維持可能性。

PHPの依存噴射対サービスロケーターPHPの依存噴射対サービスロケーターMay 13, 2025 am 12:10 AM

SELECT DEPENTENCINGINOFCENT(DI)大規模なアプリケーションの場合、ServicElocatorは小さなプロジェクトまたはプロトタイプに適しています。 1)DIは、コンストラクターインジェクションを通じてコードのテスト可能性とモジュール性を改善します。 2)ServiceLocatorは、センター登録を通じてサービスを取得します。これは便利ですが、コードカップリングの増加につながる可能性があります。

PHPパフォーマンス最適化戦略。PHPパフォーマンス最適化戦略。May 13, 2025 am 12:06 AM

phpapplicationscanbeoptimizedforspeedandEfficiencyby:1)enabingopcacheinphp.ini、2)PreparedStatementswithpordatabasequeriesを使用して、3)LoopswithArray_filterandarray_mapfordataprocessing、4)の構成ngincasaSearverseproxy、5)

PHPメールの検証:電子メールが正しく送信されるようにしますPHPメールの検証:電子メールが正しく送信されるようにしますMay 13, 2025 am 12:06 AM

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

See all articles

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール