ホームページ > バックエンド開発 > PHPチュートリアル > PHP の include、include_once、require、require_once の比較

PHP の include、include_once、require、require_once の比較

WBOY
リリース: 2016-06-23 13:55:32
オリジナル
904 人が閲覧しました

【学習目的】PHPのinclude, include_once,require,require_onceの比較


【使用する関数】include, include_once,require,require_once,

dirname(__FILE__)に達します絶対パスは相対パスに比べて検索速度が最も速くなります。


① include ステートメントと require ステートメントは、実行フロー内の他のファイルに有用なコードを挿入するために使用されます。

include と require は、エラー処理の違いを除いて似ています:

  • require は致命的なエラー (E_COMPILE_ERROR) を生成し、スクリプトを停止します
  • include は警告 (E_WARNING) のみを生成し、スクリプトは続行します
  • したがって、インクルードされたファイルが見つからない場合でも実行を続行し、結果をユーザーに出力したい場合は、 include を使用します。それ以外の場合、フレームワーク、CMS、または複雑な PHP アプリケーション プログラミングでは、実行フローへのキー ファイルを参照するために常に require を使用します。これにより、重要なファイルが誤って失われた場合のアプリケーションのセキュリティと整合性が向上します。


    ②4つの関数の実行速度はほぼ同じです。


    違いは、ファイルが複数回ロードされる場合、include 関数と require 関数は複数回ロードされるのに対し、include_once 関数と require_once 関数は 1 回だけロードされることです。ロード失敗を同時に処理するのとは異なり、include() と include_once() は警告を生成しますが、require() と require_once() は致命的なエラーを引き起こします。

    (1) include_once() ステートメントは、スクリプト実行中に指定されたファイルをインクルードし、実行します。この動作は include() ステートメントと似ていますが、唯一の違いは、 include_once() が最初にファイルが以前にインクルードされているかどうかを判断することです。インクルードされている場合、このインクルードは無視されます。

    include_once() は、関数の再定義や変数の再割り当てなどの問題を回避するために、確実に 1 回だけインクルードされるようにしたい場合に使用する必要があります。


    (2) require_once() ステートメントは、スクリプト実行中に指定されたファイルをインクルードし、実行します。この動作は require() ステートメントと似ていますが、唯一の違いは、require_once() がファイルが以前にインクルードされているかどうかを最初に判断することです。インクルードされている場合、このインクルードは無視されます。

    ③ 注意事項

    (1) パスの問題: 特にネストされたインクルードの場合、インクルードされるファイルのパスに注意する必要があります。

    たとえば、ファイル A にはファイル B が含まれ、ファイル B にはファイル C が含まれ、ファイル ABC が同じフォルダー内にない場合、特にエラーが発生しやすくなります。

    解決策:

    dirname(__FILE__) ステートメントを使用できます。これは、現在のスクリプトの絶対パスを取得することを意味します。

    例: include(dirname(__FILE__)."/inc/conn.inc.php");

    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート