<?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 => 'ru',
  ),
  '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' => 'ru',
    '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> включает и оценивает код файла как PHP-код.
 </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>.
  Перед выдачей ошибки выражение <code class="literal">include</code> проверит директорию текущего скрипта,
  в который включается файл, и текущую рабочую директорию, если PHP не нашёл файл
  в списке путей директивы <a href="ini.core.php#ini.include-path" class="link">include_path</a>.
  Выражение <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">
  Обратите внимание, при недоступности файла для чтения оба выражения выдадут дополнительную ошибку
  уровня <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> перед выдачей окончательной
  ошибки уровня <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> выражением <code class="literal">include</code>
  или ошибки уровня <strong><code><a href="errorfunc.constants.php#constant.e-error">E_ERROR</a></code></strong> выражением <code class="literal">require</code>,
  которые возникают, когда PHP не находит файл.
 </p>
 <p class="simpara">
  PHP проигнорирует директиву <a href="ini.core.php#ini.include-path" class="link">include_path</a>,
  если указали абсолютный путь (который начинается с буквы диска,
  или с обратного слеша <code class="literal">\</code> в Windows и с прямого слеша <code class="literal">/</code>
  в Unix- и Linux-системах) или путь относительно текущей директории (который начинается
  с символа <code class="literal">.</code> или символов <code class="literal">..</code>).
  Например, парсер будет искать запрошенный файл в родительской директории,
  если название файла начинается с <code class="literal">../</code>.
 </p>
 <p class="simpara">
  Документация к директиве <a href="ini.core.php#ini.include-path" class="link">include_path</a>
  подробнее рассказывает об обработке языком PHP включаемых файлов и путей.
 </p>
 <p class="simpara">
  После включения код включаемого файла наследует ту же
  <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">'зелёное'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$fruit </span><span style="color: #007700">= </span><span style="color: #DD0000">'яблоко'</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">"Одно </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">// Одно<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">"Одно </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">// Одно зелёное яблоко<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">"Одно </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">/**<br /> * Файл vars.php следует области видимости функции foo(),<br /> * поэтому переменная $fruit недоступна за пределами области видимости функции.<br /> * Переменная $color — доступна, поскольку её объявили глобальной<br /> */<br /><br /></span><span style="color: #0000BB">foo</span><span style="color: #007700">();                     </span><span style="color: #FF8000">// Одно зелёное яблоко<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"Одно </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">// Одно зелёное<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="simpara">
  После включения файла разбор переходит из режима PHP-кода
  в режим HTML-разметки в начале и возобновляется
  в конце включаемого файла. Поэтому код внутри включаемого файла,
  который требуется выполнить как PHP-код,
  оборачивают <a href="language.basic-syntax.phpmode.php" class="link">в корректные теги начала и конца PHP-кода</a>.
 </p>
 <p class="simpara">
  PHP разрешает вместо локального пути указывать файлы для включения по URL-адресу,
  если разрешили <a href="filesystem.configuration.php#ini.allow-url-include" class="link">работу URL-обёрток с include-выражениями</a>.
  Файлы включают по HTTP-протоколу или через другие обработчики, которые поддерживает язык.
  Список протоколов, которые поддерживаются PHP, приводит страница «<a href="wrappers.php" class="xref">Протоколы и обёртки</a>».
  Переменные передают в файл, который включается с удалённого сервера, в строке запроса URL-адреса
  аналогично передаче аргументов методом GET по протоколу HTTP, если целевой удалённый сервер
  интерпретирует целевой файл как PHP-код. Включение файла с удалённого сервера отличается
  от включения файла, который наследует родительскую область видимости файла, в который включается;
  скрипт выполняется на удалённом сервере, а результат затем включается в локальный скрипт.
 </p>
 <p class="para">
  <div class="example" id="example-3">
   <p><strong>Пример #3 
    Пример включения вывода, который сгенерировал скрипт удалённого сервера,
    выражением <code class="literal">include</code> через HTTP-запрос
   </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">/**<br /> * В примере предполагается, что адрес www.example.com настроили на обработку<br /> * файлов с расширением .php, но не .txt. Кроме того, «Сработает» здесь означает, что переменные<br /> * $foo и $bar доступны внутри включаемого файла, и значения переменных определили при обработке переменных GET-запроса<br /> */<br /><br />// Не сработает; файл file.txt не обрабатывается адресом www.example.com как 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">// Сработает: удалённому скрипту будут доступны переменные $foo и $bar<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 /><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>,
   а при включении PHP-кода из файла на удалённом сервере потребуется соблюдать
   повышенную осторожность и проверять, чтобы удалённый сервер создал корректный и безопасный код.
  </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>
  внутри включаемого файла, чтобы завершить процесс выполнения
  во включаемом файле и вернуться к выполнению родительского файла. Из включаемых файлов
  также доступен возврат значения. Значение вызова включения получают так же, как
  если бы вызвали функцию. Невозможно получить значение вызова включения
  удалённого файла, если только вывод удалённого файла не содержит
  <a href="language.basic-syntax.phpmode.php" class="link">корректные теги начала и конца PHP-кода</a>,
  как и с локальными файлами. Переменные, которые объявили внутри PHP-тегов,
  включатся в текущий скрипт в месте включения файла.
 </p>
 <p class="para">
  Поскольку выражение <code class="literal">include</code> относится к языковым конструкциям,
  круглые скобки вокруг аргумента необязательны. При сравнении
  значения, которое возвращает выражение включения файла, соблюдают осторожность.
  <div class="example" id="example-4">
   <p><strong>Пример #4 Сравнение значения, которое возвращает выражение include</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">// Не сработает, PHP интерпретирует выражение как 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">// Cработает<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: #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> равно <code class="literal">1</code>, поскольку
  инструкция успешно включила файл. Обратите внимание на разницу между приведёнными примерами.
  В первом записали <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> во включаемом файле или после.
  PHP выдаст фатальную ошибку при повторном включении файла с определениями функций,
  поскольку функции получили определение при первом включении. Лучше включить файл
  выражением <span class="function"><a href="function.include-once.php" class="function">include_once</a></span>, а не проверять, включался ли файл прежде.
 </p>
 <p class="simpara">
  Другой путь «включить» PHP-файл в переменную — захватить
  вывод <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 /><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 />{<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 /><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">
  Обратите внимание на конфигурационные директивы
  <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>
  в файле <var class="filename">php.ini</var>, чтобы включать файлы в скрипты автоматически.
 </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); ?>