ホームページ  >  記事  >  バックエンド開発  >  include、include_once、require、require_once の違い

include、include_once、require、require_once の違い

WBOY
WBOYオリジナル
2016-07-30 13:30:46978ブラウズ

最初に言っておきたいのは、include、include_once、require、require_once のコア関数はすべて、ターゲット Web ページのコードを直接コピーするのと同じであるということです。

基本的に、パフォーマンスを考慮しない場合、include、include_once、require、require_once を使用することで基本的な効果を達成できます。基本的には好きなように使ってください。

小さな違いは次のとおりです:

たとえば、1.php には簡単な print ステートメントがあります:

<?php echo "1" ?>

次のプログラムを実行した結果:

<?php
include &#39;1.php&#39;;
require &#39;1.php&#39;;

include_once &#39;1.php&#39;;
require_once &#39;1.php&#39;;
?>

は 4 つの 1 ではなく 2 つの 1 です。 include と require の両方で指定されたファイルをインポートします。_once は 1 回だけインポートすることを意味します。つまり、以前に導入されたファイルは再度インポートされません。

次のように書かれた場合:

<?php
include_once &#39;1.php&#39;;
require_once &#39;1.php&#39;;
include &#39;1.php&#39;;
require &#39;1.php&#39;;
?>

結果は 4 つになります。

_once は以前に導入されたものは今後導入されないことを意味しますが、このステートメントはインポートされた Web ページのコードが同じであるかどうかをチェックしないことに注意してください。たとえば、まったく同じコードを持つ 2 つの Web ページがあります。同じコード、untitled.html と untitled1.html です。すべて:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" c/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
</body>
</html>

次の文がある場合:

<?php
include_once &#39;untitled.html&#39;;
include_once &#39;untitled1.html&#39;;
?>

結果は次のようになります:


同じ部分が 2 回出現することを確認します。 _once は、ファイル名が以前に導入されたかどうかを判断するためにのみ使用されます。

そのため、_once では、同じリソースが異なる名前で複数回導入される現象を防ぐことはできません。

インポートされたファイルを処理するさまざまな方法に加えて、include と require の最大の違いは、include は存在しないファイルを導入するときに警告を生成し、スクリプトは引き続き実行されますが、require は致命的なエラーを引き起こし、スクリプトは実行を停止します。

たとえば、a.php が存在しない場合でも、次のコードは b:

<?php
include &#39;a.php&#39;;
echo &#39;b&#39;;
?>
を出力しますが、:

<?php
require &#39;a.php&#39;;
echo &#39;b&#39;;
?>
は出力しません。

以下の違いもあります:

include() は条件付き包含関数ですが、require() は無条件包含関数です。

if(FALSE){ 
    include 'file.php'; //file.php不会被引入 
} 

if(FALSE){ 
    require 'file.php'; //file.php将会被引入
}
include には戻り値がありますが、require には戻り値がありません

$retVal = include(’somefile.php’);
if(!empty($retVal)){
  echo “文件包含成功”;
}else{
  echo “文件包含失败”;
}
は問題ありません。

include() の実行時に参照する必要があるファイルは、毎回読み込んで評価する必要があります。 require() の実行時に参照する必要があるファイルは、実際には 1 回だけ処理されます。これらの命令のいずれかを含むコードや複数回実行される可能性のあるコードがある場合は、require() ステートメントを使用する方が効率的であることがわかります。ファイルはコードが実行されるたびに読み取られます。ループするには、include() を使用します。

require は通常、PHP プログラムの先頭に配置され、PHP プログラムが実行される前に、まず require で指定されたファイルを読み込み、それを PHP プログラムの Web ページの一部にします。このようにして、よく使われる機能を Web ページに導入することもできます。通常は include メソッドが使用され、この関数は通常プロセス制御の処理部分に配置されます。 PHP プログラムの Web ページは、インクルード ファイルを読み取るときにのみ読み取ります。これにより、プログラムの実行処理を簡略化することができる。

また、includeとrequireの後に括弧を付けるかどうかの問題ですが、理論的にはincludeやrequireの後に括弧があっても実行結果に違いはありませんが、括弧を付けると効率が悪くなりますので、括弧が無い場合は後で、括弧を追加しないでください。

著作権声明: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。

上記では、include、include_once、require、require_once の違いを、関連する側面も含めて紹介しました。PHP チュートリアルに興味のある友人にとって役立つことを願っています。

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