ホームページ バックエンド開発 PHPチュートリアル PHP の include と require についてまだ知りませんか? この記事をご覧ください。

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

Jul 30, 2021 pm 05:57 PM
include php require

この記事では、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

See all articles