ホームページ  >  記事  >  バックエンド開発  >  PHPのinclude()関数とrequire()関数の違いは何ですか?

PHPのinclude()関数とrequire()関数の違いは何ですか?

不言
不言オリジナル
2018-08-07 10:55:453161ブラウズ

この記事の内容は、PHP の include() 関数と require() 関数の違いについてであり、一定の参考値がありますので、困っている方は参考にしていただければ幸いです。

PHP の include と require の違いについては、インターネット上に情報が多すぎます。実際、言われたことは検証に値しません。次のようなスクリーンショットを偶然見つけました:


そして私は今でもその説明を信じています: include() は条件付き包含関数ですが、 require() は無条件に組み込まれる関数です。

しかし、これはずっと前のことです。現在の PHP では、require と include の間には確かに違いがあります。著者はバージョン 5.3 以降をテストしました。テスト結果は次のとおりです:

私は次のことを発見しました。これら 2 つの構造は、封じ込め障害の処理方法を除いてパフォーマンスがまったく同じであることを除きます。

1. パフォーマンスに関しては、

テストの結果、require と include でパフォーマンスに大きな差がないことがわかりました。この点は考慮する必要がないと感じています (考慮していなかったかもしれません)十分なサンプルをテストしてください)

<pre name="code" class="php">$startTime=time();
$startMemoryUsed=memory_get_usage();  
require "a1.inc";
$endMemoryUsed=memory_get_usage();
$endTime=time();
$usedMemory=($endMemoryUsed-$startMemoryUsed)/1024; 
print_r($usedMemory);//1.6171875
echo &#39;</br>&#39;;
print_r($endTime-$startTime);
/*$startTime=time();
$startMemoryUsed=memory_get_usage();  
include "a1.inc";
$endMemoryUsed=memory_get_usage();  
$endTime=time();
$usedMemory=($endMemoryUsed-$startMemoryUsed)/1024; 
print_r($usedMemory);//1.6171875
print_r($endTime-$startTime);*/

2. インクルードのエラー処理に関しては、

インクルードが失敗すると、include() は警告を生成して実行を続行しますが、require() は致命的なエラーを引き起こします。つまり、ファイルが見つからないときにページの処理を停止したい場合は require() を使用し、それ以外の場合は include() を使用します。

include "a9.inc";//<span style="font-family: Arial, Helvetica, sans-serif;">a9.inc不存在会产生一个警告</span>
require "a10.inc";//a10.inc不存在会产生一个致命错误

補足: include、require include スコープ

ファイル a2.inc

$name="lidquan";
class Teacher{
    public function show(){
        echo &#39;my job is teacher</br>&#39;;
    }
}
function showName(){
    echo &#39;a2.inc 里面的方法&#39;;
}

ファイルindex.php

function a(){
    require "a2.inc";
    $teacher =new Teacher();
    $teacher->show();
}
 
a();//正常调用
 
showName();//正常调用
 
var_dump($name);//提示$name没有定义

のスクリーンショットは次のとおりです:

ファイルを含めた後のスコープの問題の概要は次のとおりです:

1. All in インクルードされた後、インクルードされたファイルで定義された関数とクラスは、インクルードされたファイル内でグローバル スコープを持ちます。

##2. インクルードされたファイルの変数のスコープは、変更に応じて変わります。含まれる位置のさまざまな。たとえば、関数にインクルードされている場合、インクルードされたファイルの変数はローカル変数です。

おすすめ関連記事:

php は Java をリクエストするために、curl メソッドをどのように使用しますかインターフェース? PHP がカールメソッドを使用して Java インターフェースをリクエストするための 2 つの方法

セッションをデータベースに保存し、PHP で使用する方法 (コード付き)

フレームワークでページング文字列を組み立てるための ThinkPHP コード実装

以上がPHPのinclude()関数とrequire()関数の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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