PHP include и require

Чтобы сделать программный код более удобочитаемым, вы можете к примеру поместить определения функций и/или классов в отдельный файл. Возможность подключения файлов в PHP обеспечивают четыре языковые инструкции:

Все четыре инструкции могут принимать в качестве параметра имя локального файла. Инструкция include и require очень схожи по действию и отличаются лишь реакцией на невозможность получения запрошенного ресурса. Например, в случае недоступности ресурса include и include_once выводят предупреждение и пытаются продолжить исполнение программы. require и require_once при недоступности запрошенного ресурса останавливают обработку данной страницы.

include

Инструкция include позволяет подключать и присоединять к вашему PHP-сценарию другие сценарии. При запуске программы интерпретатор просто заменит инструкцию на содержимое подключаемого файла. Давайте посмотрим как это работает, создайте файл с именем add.php и напишите внутри:

<?php
  
  $var1 = 'красный';
  $var2 = 'яблоко';

?>

Теперь создадим другой файл и назовем его к примеру test.php, в котором мы подключим файл add.php:

<?php
 
  // предполагается, что файл add.php находится в той же директории, 
  // что и сам сценарий, поэтому мы не указываем путь к файлу
  include 'add.php';
  echo "\$var1 = $var1<br> \$var2 = $var2"

?>

Как видно из примера инструкция include присоединяет содержимое подключаемого файла, благодаря этому ваша программа получает доступ к другим переменным, функциям, классам и т.д.

Примечание: вы можете присваивать подключаемым файлам любые имена, но всегда добавляйте расширение .php, потому что при использовании другого расширения, злоумышленники могут запросить ваш файл, и веб-сервер вернет его текст. Это угроза безопасности, поскольку могут быть раскрыты пароли или принцип действия вашей программы, что дает лазейку злоумышленникам. Чтобы этого не происходило, подключаемые файлы должны обрабатываться интерпретатором PHP.

Подключение внутри функции

Если подключение файла происходит внутри функции, тогда весь код, содержащийся во включаемом файле, будет вести себя так, как будто он был определен внутри этой функции, т.е. код будет иметь локальную область видимости. Перепишем немного предыдущий пример:

<?php
  // код внутри файла add.php
 
  $var1 = 'красный';
  $var2 = 'яблоко';

?>

Теперь добавим функцию в test.php:

<?php
  
  function foo() {
  
    // объявили $var1 глобальной переменной
	global $var1;

    include 'add.php';

    echo "Внутри функции: $var1 $var2";
  }
  
  foo();
  echo "<br>В глобальной области: $var1";

?>

Так как внутри функции мы объявили переменную $var1 глобальной, она становится также доступной и в глобальной области видимости.

Путь к файлу

Файлы подключаются исходя из указанного пути к файлу, если путь не указан, будет использоваться путь, который указан в директиве include_path (в конфигурационном файле php.ini). Если файл не найден по указанному пути в include_path, инструкция include попытается проверить текущую рабочую директорию, в которой находится скрипт подключающий файл, если конструкция include не сможет найти файл, будет выдано предупреждение (warning).

Если путь указан - не важно какой: абсолютный или относительный (относительно текущей директории, где расположен включающий сценарий) - директива include_path будет проигнорирована.

include_once

Поведение include_once идентично инструкции include, с той лишь разницей, что если код из файла уже был один раз подключен, он не будет подключен и выполнен повторно. Это помогает избежать проблемы с переопределением функций, переменных и т.д. Чтобы лучше понять как это работает приведем пример:

<?php
  // определим функцию внутри файла add.php
  
  function add($x, $y) {
    return $x + $y;
  }

?>

В test.php попытаемся выполнить следующий код:

<?php
  // подключаем два раза файл add.php
  
  include 'add.php';
  include 'add.php';
  
  echo add(5, 5);

?>

В результате будет получено сообщение об ошибке, так как функции переопределять нельзя. Чтобы избежать ошибок подобного рода, следует использовать инструкцию include_once. Перепишем код в файле test.php:

<?php
  // подключаем два раза файл add.php
  
  include_once 'add.php';
  include_once 'add.php';
  
  echo add(5, 5);

?>

require и require_once

Инструкции require и require_once работают идентично include и include_once за исключением лишь одной особенности. Если подключаемый файл не будет найден, выполнение скрипта будет остановлено, в то время как include и include_once выводят предупреждение и продолжают выполнение скрипта.

Совет: постарайтесь совсем отказаться от использования include и require, применяйте их аналоги с суффиксом _once. Это упростит разбиение большой и сложной программы на относительно независимые модули.

    
Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011-2016 © puzzleweb.ru

Реклама на сайте | Обратная связь