<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.control-structures.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'function.include.php',
    1 => 'include',
    2 => 'include',
  ),
  'up' => 
  array (
    0 => 'language.control-structures.php',
    1 => '制御構造',
  ),
  'prev' => 
  array (
    0 => 'function.require.php',
    1 => 'require',
  ),
  'next' => 
  array (
    0 => 'function.require-once.php',
    1 => 'require_once',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'language/control-structures/include.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.include" class="sect1">
 <h2 class="title">include</h2>
 <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p>
 <p class="simpara">
  <code class="literal">include</code> 式は指定されたファイルを読み込み、評価します。
 </p>
 <p class="simpara">
  以下の記述内容は <span class="function"><a href="function.require.php" class="function">require</a></span> にも当てはまります。
 </p>
 <p class="simpara">
  ファイルのインクルードは、指定されたパスから行います。パスを指定しない場合は、
  <a href="ini.core.php#ini.include-path" class="link">include_path</a> の設定を利用します。
  ファイルが <a href="ini.core.php#ini.include-path" class="link">include_path</a>
  に見つからないときは、<code class="literal">include</code>
  は呼び出し元スクリプトのディレクトリと現在の作業ディレクトリも探します。
  <code class="literal">include</code> は、ファイルを見つけられない場合に
  <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>
  を発行します。一方 <span class="function"><a href="function.require.php" class="function">require</a></span> の場合は、同じ場合に
  <strong><code><a href="errorfunc.constants.php#constant.e-error">E_ERROR</a></code></strong>
  を発行する点が異なります。
 </p>
 <p class="simpara">
  <code class="literal">include</code> と <code class="literal">require</code> は、
  ファイルがアクセスできない場合、
  最終的に <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> や <strong><code><a href="errorfunc.constants.php#constant.e-error">E_ERROR</a></code></strong> を発生させる前に、
  追加の <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> を発生させることに注意して下さい。
 </p>
 <p class="simpara">
  パスを指定した場合 —
  絶対パス (Windows ならドライブレターあるいは
  <code class="literal">\</code> で始まるパス、Unix/Linux 系なら <code class="literal">/</code>
  で始まるパス) あるいはカレントディレクトリからの相対パス
  (<code class="literal">.</code> あるいは <code class="literal">..</code> で始まるパス) のどちらでも
  — は
  <a href="ini.core.php#ini.include-path" class="link">include_path</a> は無視されます。たとえば
  <code class="literal">../</code> ではじまるファイル名を指定した場合は、
  親ディレクトリからそのファイルを探します。
 </p>
 <p class="simpara">
  PHP でのファイルのインクルードやインクルードパスについての詳細は
  <a href="ini.core.php#ini.include-path" class="link">include_path</a> のドキュメントを参照ください。
 </p>
 <p class="simpara">
  ファイルが読み込まれるとそのファイルに含まれるコードは、
  <span class="function"><strong>include</strong></span>もしくは<span class="function"><a href="function.require.php" class="function">require</a></span>が実行された
  行の<a href="language.variables.scope.php" class="link">変数スコープ</a>を継承します。
  呼び出し側の行で利用可能である全ての変数は、読み込まれたファイル内で利用可能です。
  しかし、読み込まれたファイル内で定義されている関数やクラスはすべて
  グローバルスコープとなります。
 </p>
 <p class="para">
  <div class="example" id="example-1">
   <p><strong>例1 基本的な <code class="literal">include</code> の例</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">vars.php<br /><span style="color: #0000BB">&lt;?php<br /><br />$color </span><span style="color: #007700">= </span><span style="color: #DD0000">'green'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$fruit </span><span style="color: #007700">= </span><span style="color: #DD0000">'apple'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">?&gt;<br /></span><br />test.php<br /><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"A </span><span style="color: #0000BB">$color</span><span style="color: #DD0000"> </span><span style="color: #0000BB">$fruit</span><span style="color: #DD0000">"</span><span style="color: #007700">; </span><span style="color: #FF8000">// A<br /><br /></span><span style="color: #007700">include </span><span style="color: #DD0000">'vars.php'</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #DD0000">"A </span><span style="color: #0000BB">$color</span><span style="color: #DD0000"> </span><span style="color: #0000BB">$fruit</span><span style="color: #DD0000">"</span><span style="color: #007700">; </span><span style="color: #FF8000">// A green apple<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="simpara">
  呼び出し側のファイルの関数定義の中で読み込みが行われた場合は、
  読み込まれるファイルに含まれる全てのコードは、
  その関数内で定義されているものとして動作します。
  従って変数のスコープもその関数のものが継承されます。
  ただ <a href="language.constants.magic.php" class="link">マジック定数</a>
  は例外で、これは読み込みを行う前にパーサーが評価します。
 </p>
 <p class="para">
  <div class="example" id="example-2">
   <p><strong>例2 関数内での読み込み</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">function </span><span style="color: #0000BB">foo</span><span style="color: #007700">()<br />{<br />    global </span><span style="color: #0000BB">$color</span><span style="color: #007700">;<br /><br />    include </span><span style="color: #DD0000">'vars.php'</span><span style="color: #007700">;<br /><br />    echo </span><span style="color: #DD0000">"A </span><span style="color: #0000BB">$color</span><span style="color: #DD0000"> </span><span style="color: #0000BB">$fruit</span><span style="color: #DD0000">"</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #FF8000">/* vars.php は foo() のスコープを継承するため *<br />* $fruit はこの関数の外では無効となります。  *<br />* $color はglobalとして宣言されているため    *<br />* 有効です。                                 */<br /><br /></span><span style="color: #0000BB">foo</span><span style="color: #007700">();                    </span><span style="color: #FF8000">// A green apple<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"A </span><span style="color: #0000BB">$color</span><span style="color: #DD0000"> </span><span style="color: #0000BB">$fruit</span><span style="color: #DD0000">"</span><span style="color: #007700">;   </span><span style="color: #FF8000">// A green<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="simpara">
  ファイルが読み込まれるときには、読み込まれるファイルの先頭で
  PHPモードを抜けてHTMLモードになり、最後に再びPHPモードに戻ります。
  このため、読み込むファイル中のPHPコードとして実行する必要がある
  コードは、<a href="language.basic-syntax.phpmode.php" class="link">
  有効なPHPの開始タグおよび終了タグ</a>で括る必要があります。
 </p>
 <p class="simpara">
  &quot;<a href="filesystem.configuration.php#ini.allow-url-include" class="link">URL include ラッパー</a>&quot;が
  有効になっている場合、ローカルなパス名
  の代わりにURL(HTTP経由)を用いて読み込むファイルを指定することが可能です。
  URLで指定されたサーバーがファイルをPHPコードとして解釈することが
  出来る場合には、HTTP GETを使用してURLリクエストに引数を指定することが
  出来ます。これはファイルの読み込み云々やスコープの継承とは関係なく、
  ただ単純にスクリプトがリモートのサーバーで実行されて結果がローカルの
  スクリプトに読み込まれる、というだけのことです。
 </p>
 <p class="para">
  <div class="example" id="example-3">
   <p><strong>例3 HTTP経由の <code class="literal">include</code></strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">/* この例は www.example.com が.phpはPHPスクリプトとして扱い、.txtは通常の *<br /> * ファイルとして扱うように設定されていると仮定しています。また、ここでの *<br /> * '動作します'という言葉の意味は、変数$fooと$barが読み込まれる側のファイ *<br /> * ルで使用可能である、ということです。                                   */<br /><br />// 動作しません: www.example.com では file.txt はPHPコードとして解釈されません。<br /></span><span style="color: #007700">include </span><span style="color: #DD0000">'http://www.example.com/file.txt?foo=1&amp;bar=2'</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// 動作しません: 'file.php?foo=1&amp;bar=2' という名前のファイルをローカルファイル<br />// システム上から探し出そうとします。<br /></span><span style="color: #007700">include </span><span style="color: #DD0000">'file.php?foo=1&amp;bar=2'</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// 動作します。<br /></span><span style="color: #007700">include </span><span style="color: #DD0000">'http://www.example.com/file.php?foo=1&amp;bar=2'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <div class="warning"><strong class="warning">警告</strong>
  <h1 class="title">セキュリティの警告</h1>
  <p class="para">
   リモートファイルはリモートサーバー上で実行されます（ファイルの拡張子や
   リモートサーバーが PHP の実行を許可しているかどうかに依存します）が、
   有効な PHP スクリプトである必要があります。なぜならそれはローカル
   サーバー上で処理されるからです。もしリモートサーバー上で処理された結果が
   ほしいだけならば、<span class="function"><a href="function.readfile.php" class="function">readfile()</a></span> を使用するほうがよい
   でしょう。そうでなければ、リモートスクリプトが有効な期待通りのコードを
   生成していることを確認するため、注意を払うことが必要になります。
  </p>
 </div>
 <p class="para">
  <a href="features.remote-files.php" class="link">リモートファイル</a>,
  <span class="function"><a href="function.fopen.php" class="function">fopen()</a></span>, <span class="function"><a href="function.file.php" class="function">file()</a></span>も参照ください。
 </p>
 <p class="simpara">
  値の返し方: <code class="literal">include</code> に失敗したときには
  <code class="literal">FALSE</code> を返し、警告を発生させます。
  成功した場合の戻り値は、インクルードしたファイル側で変更していない限りは
  <code class="literal">1</code> です。
  インクルードしたファイルの中で <span class="function"><a href="function.return.php" class="function">return</a></span> を実行すれば、
  そのファイルの処理をそこで止めて呼び出し元に処理を戻せます。
  読み込まれたファイルから値を返すことも可能です。
  通常の関数で行うのと同様にincludeコールの値を取得することができます。
  しかし、読み込まれたリモートファイル(ローカルファイルの場合も同様)の出力が、
  <a href="language.basic-syntax.phpmode.php" class="link">有効なPHPの開始／
   終了タグ</a>を有していない限り、リモートファイルを読み込む際に値を
  取得することはできません。
  必要な変数をこれらのタグの中で宣言することができ、これらの変数は
  ファイルが読み込まれた位置で使用可能となります。
 </p>
 <p class="para">
  <code class="literal">include</code> は特別な言語構造であるため、
  引数の前後に括弧は不要です。
  戻り値を比較する際には注意してください。
  <div class="example" id="example-4">
   <p><strong>例4 インクルードの戻り値を比較する</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// 動作しません。include(('vars.php') == TRUE) つまり、include('1') と評価されます<br /></span><span style="color: #007700">if (include(</span><span style="color: #DD0000">'vars.php'</span><span style="color: #007700">) == </span><span style="color: #0000BB">TRUE</span><span style="color: #007700">) {<br />    echo </span><span style="color: #DD0000">'OK'</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #FF8000">// 動作します。<br /></span><span style="color: #007700">if ((include </span><span style="color: #DD0000">'vars.php'</span><span style="color: #007700">) == </span><span style="color: #0000BB">TRUE</span><span style="color: #007700">) {<br />    echo </span><span style="color: #DD0000">'OK'</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  <div class="example" id="example-5">
   <p><strong>例5 <code class="literal">include</code> と <span class="function"><a href="function.return.php" class="function">return</a></span> 文</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">return.php<br /><span style="color: #0000BB">&lt;?php<br /><br />$var </span><span style="color: #007700">= </span><span style="color: #DD0000">'PHP'</span><span style="color: #007700">;<br /><br />return </span><span style="color: #0000BB">$var</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">?&gt;<br /></span><br />noreturn.php<br /><span style="color: #0000BB">&lt;?php<br /><br />$var </span><span style="color: #007700">= </span><span style="color: #DD0000">'PHP'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">?&gt;<br /></span><br />testreturns.php<br /><span style="color: #0000BB">&lt;?php<br /><br />$foo </span><span style="color: #007700">= include </span><span style="color: #DD0000">'return.php'</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #0000BB">$foo</span><span style="color: #007700">; </span><span style="color: #FF8000">// 'PHP'と出力されます<br /><br /></span><span style="color: #0000BB">$bar </span><span style="color: #007700">= include </span><span style="color: #DD0000">'noreturn.php'</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #0000BB">$bar</span><span style="color: #007700">; </span><span style="color: #FF8000">// 1が出力されます<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="simpara">
  読み込みが成功すると<code class="literal">$bar</code>の値は1となります。上の2つの例の違いに
  注目してください。最初の例では読み込まれるファイル側で <span class="function"><a href="function.return.php" class="function">return</a></span>
  を使用し、もう一方では使用していません。
  ファイルが読み込めなかった場合、<strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> が返され、
  <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> が発生します。
 </p>
 <p class="para">
  読み込まれるファイルで定義された関数がある場合、
  これらは、<span class="function"><a href="function.return.php" class="function">return</a></span> の前後によらず
  メインファイルで使用できます。
  このファイルが二度読み込まれた場合、関数が定義済みであるため
  致命的なエラーが発生します。
  ファイルが読み込み済みであるかどうかを調べ、
  読み込まれるファイルの内容を条件分岐で返すかわりに
  <span class="function"><a href="function.include-once.php" class="function">include_once</a></span> を使用することを推奨します。
 </p>
 <p class="simpara">
  PHP ファイルの内容を変数に &quot;include する&quot; もうひとつの方法は、
  <a href="ref.outcontrol.php" class="link">出力制御関数</a>
  を <code class="literal">include</code> とともに用いて
  出力をキャプチャすることです。たとえば、
 </p>
 <p class="para">
  <div class="example" id="example-6">
   <p><strong>例6 出力バッファリングを用い、 PHP ファイルの内容を文字列として読み込む</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$string </span><span style="color: #007700">= </span><span style="color: #0000BB">get_include_contents</span><span style="color: #007700">(</span><span style="color: #DD0000">'somefile.php'</span><span style="color: #007700">);<br /><br />function </span><span style="color: #0000BB">get_include_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">) {<br />    if (</span><span style="color: #0000BB">is_file</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">)) {<br />        </span><span style="color: #0000BB">ob_start</span><span style="color: #007700">();<br />        include </span><span style="color: #0000BB">$filename</span><span style="color: #007700">;<br />        return </span><span style="color: #0000BB">ob_get_clean</span><span style="color: #007700">();<br />    }<br />    return </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  スクリプト中で自動的にファイルをインクルードするには、<var class="filename">php.ini</var> の
  <a href="ini.core.php#ini.auto-prepend-file" class="link">auto_prepend_file</a> および
  <a href="ini.core.php#ini.auto-append-file" class="link">auto_append_file</a>
  オプションも参照ください。
 </p>

 <blockquote class="note"><p><strong class="note">注意</strong>: <span class="simpara">これは、関数ではなく
言語構造のため、<a href="functions.variable-functions.php" class="link">可変関数</a> や <a href="functions.arguments.php#functions.named-arguments" class="link">名前付き引数</a> を用いてコールすることはできません。</span></p></blockquote>

 <p class="simpara">
  <span class="function"><a href="function.require.php" class="function">require</a></span>, <span class="function"><a href="function.require-once.php" class="function">require_once</a></span>,
  <span class="function"><a href="function.include-once.php" class="function">include_once</a></span>, <span class="function"><a href="function.get-included-files.php" class="function">get_included_files()</a></span>,
  <span class="function"><a href="function.readfile.php" class="function">readfile()</a></span>, <span class="function"><a href="function.virtual.php" class="function">virtual()</a></span> および
  <a href="ini.core.php#ini.include-path" class="link">include_path</a> も参照ください。
 </p>
</div><?php manual_footer($setup); ?>