PHP の include と require についてまだ知りませんか? この記事をご覧ください。

青灯夜游
リリース: 2023-04-10 13:08:02
転載
2392 人が閲覧しました

この記事では、PHP の include と require について詳しく紹介し、誰でも include と require を徹底的に理解できるようにします。

PHP の include と require についてまだ知りませんか? この記事をご覧ください。

PHP では、外部ファイルをインクルードする方法として、include と require の 2 つがあります。それらの違いは何ですか?

ファイルが存在しない場合、またはエラーが発生した場合、require は E_COMPILE_ERROR レベルのエラーを生成し、プログラムの実行が停止します。インクルードは警告のみを生成し、スクリプトは実行を続行します。

これがそれらの主な違いであり、他の点では、require は基本的に include と同じです。

  • インクルードされたファイルは、最初にパラメータで指定されたパスに従って検索され、ディレクトリが指定されていない場合 (ファイル名のみ)、include_path で指定されたディレクトリに従って検索されます。ファイルが include_path の下に見つからない場合、include は最終的に、呼び出し元のスクリプト ファイルが配置されているディレクトリと現在の作業ディレクトリを検索します。
  • include_path は php.ini で定義されています
  • ファイルがインクルードされると、それに含まれるコードは次の行の変数スコープを継承します。インクルードが見つかりました。その時点から、呼び出し側ファイルのその行で使用可能な変数は、呼び出されたファイルでも使用できるようになります。ただし、インクルード ファイルで定義されたすべての関数とクラスはグローバル スコープを持ちます。
  • #通常の require と include に加えて、require_once と include_once もあります。それらの関数は次のとおりです:

ファイルが既にインクルードされている場合、再度インクルードされることはありません。このステートメントの名前が示すように、スクリプトの実行中に同じファイルが複数回インクルードされる可能性があり、それを避けるために必ず 1 回だけインクルードする必要がある場合に、only include Once

    を使用できます。関数の再定義、変数の再割り当て、その他の問題
  • いくつかの例を見てみましょう:
  • // a.php 不存在
    include "a.php"; // warning
    // require "a.php"; // error
    
    echo 111; // 使用include时111会输出
    
    // file1.php 中只有一行代码echo 'file1';
    require_once 'includeandrequire/file1.php'; // file1
    require_once 'includeandrequire/file1.php'; // noting
    
    include_once 'includeandrequire/file1.php'; // noting
    include_once 'includeandrequire/file1.php'; // noting
    
    require 'includeandrequire/file1.php'; // file1
    require 'includeandrequire/file1.php'; // file1
    
    require 'includeandrequire/file1.php'; // file1
    require 'includeandrequire/file1.php'; // file1
    ログイン後にコピー
最初の _once が、require_once であっても include_once であっても、正常に読み込まれると、このファイルは再度ロードされません。 _once を指定しないと、ファイルは繰り返しロードされます。

file2.php

<?php

echo &#39;file2:&#39; . $a, PHP_EOL;
echo &#39;file2:&#39; . $b, PHP_EOL;
$b = "file2";

myFile.php

<?php

$a = &#39;myFile&#39;;
$b = &#39;youFile&#39;;
require_once &#39;includeandrequire/file2.php&#39;;
echo $a, PHP_EOL;
echo $b, PHP_EOL;

// 输出结果
// file2:myFile
// file2:youFile
// myFile
// file2

file3.php
<?php

$c = &#39;file3&#39;;

myFile.php
<?php
function test(){
    require_once &#39;includeandrequire/file3.php&#39;;
    echo $c, PHP_EOL; // file3
}
test();
echo $c, PHP_EOL; // empty
ログイン後にコピー

インクルードされたファイルは親ファイルの変数を取得でき、親ファイルもインクルードされたファイルの変数を取得できますが、_once の特殊なケースに注意する必要があります。

function foo(){
    require_once &#39;includeandrequire/file3.php&#39;;
    return $c;
}

for($a=1;$a<=5;$a++){
    echo foo(), PHP_EOL;
}

// file3
// empty
// empty
// empty
// empty
ログイン後にコピー

_once を使用してループで読み込むと、最初は file3.php の内容のみが出力されます。これはなぜですか?現在の変数スコープはメソッド内にあるため、最初のロードが完了した後、後続のファイルは再度ロードされません。このとき、次の 4 つのループには

c がありません。デフォルト値は空です。

2 つのメソッドで _once を使用してファイルが同時にロードされた場合、2 番目のメソッドでもそのファイルがロードされますか? PHP の include と require についてまだ知りませんか? この記事をご覧ください。

function test1(){
    require_once &#39;includeandrequire/file1.php&#39;;
}
function test2(){
    require_once &#39;includeandrequire/file1.php&#39;;
}
test1(); // file1
test2(); // empty
ログイン後にコピー

申し訳ありませんが、最初のメソッドのみが正常にロードされ、2 番目のメソッドは再度ロードされません。

それでは、日常の開発で使用するのにどちらが適しているのでしょうか?

効率の面では、_once はファイルがロードされているかどうかを確認する必要があります。効率は低くなりますが、絶対的なものではありません。肉眼では見えない場合もあるため、その効率は低くなります。問題は無視して構いません。そして、_once を使用しない場合よりもはるかに多くのメリットをもたらします。

    事前エラーの原則に基づいて、require_once を使用する方が良いでしょう。警告を表示しないように PHP エラー レベルを調整すると、 include の警告情報が表示されなくなり、予期しないエラーが発生するためです。このファイルは複数のクラスまたはメソッドで使用する必要があります。_once を使用すると、同じファイルを後続のメソッドでロードできなくなる可能性があります。
  • require または include を使用する場合は、括弧を使用しないことをお勧めします。 include ('xxx.php'); などを使用します。これらはシステム メソッドではなく式キーワードであるため、 include 'xxx.php'
  • include および require ファイルを直接使用できます。 return が存在する場合は、変数を使用して returnun によって返されたデータを受け取ることができます。さらに、次のように、PHP 以外のファイルやリモート ファイルをロードすることもできます (リモート ロードでは、php.ini のallow_url_include が On であることを確認する必要があります)。 ##
    file4.php
    <?php
    
    return &#39;file4&#39;;
    
    file4.txt
    可以吧
    
    myFile.php
    <?php
    $v = require &#39;includeandrequire/file4.php&#39;;
    echo $v, PHP_EOL; // file4
    
    include &#39;includeandrequire/file4.txt&#39;;
    // 可以吧
    
    include &#39;https://www.baidu.com/index.html&#39;;
    // 百度首页的html代码
    ログイン後にコピー
  • これで、 include と require についての理解が非常に深まりました。ファイルをロードするこれら 2 つの方法は複雑ではありませんが、いくつかの落とし穴にもなりがちです。特に _once がメソッドで使用されている場合は、特別な注意が必要です。それに対して支払わなければなりません。最後に、小さな利点として、ディレクトリ内のすべてのファイルを一度にロードするメソッドをカプセル化します:
  • function include_all_once ($pattern) {
        foreach (glob($pattern) as $file) { 
            require $file;
        }
    }
    
    include_all_once(&#39;includeandrequire/*&#39;);
    ログイン後にコピー
    测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/%E5%BD%BB%E5%BA%95%E6%90%9E%E6%98%8E%E7%99%BDPHP%E4%B8%AD%E7%9A%84include%E5%92%8Crequire.php
    ログイン後にコピー
    推奨学習: "
PHP ビデオ チュートリアル

"

以上がPHP の include と require についてまだ知りませんか? この記事をご覧ください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!