Эти директивы заменяются интерпретатором в процессе выполнения скрипта на содержимое файла, указанного в качестве параметра. Аналогией является директива #include в языке C. Синтаксис очень простой:
include "/folder/file.inc"; require "/folder/file.inc";
Кроме открытия локальных файлов, можно подключать файлы по сети используя вместо пути URL. Эта возможность может быть блокирована параметром конфигурации URL fopen wrappers.
Отличие данных директив состоит в том, что в отличие от include, require требует обязательного присутствия подключаемого файла и выдает критическую ошибку при его отстутствии, а include — лишь предупреждение.
Подключаемый файл выполняется как HTML-код. Таким образом, если вы хотите подключить php-скрипт, код должен быть обрамлен <?php и ?>.
Директивы require и include не являются функциями. Скорее они — специальные конструкции языка. Иногда include называют "почти-функцией", так как она может принимать значение, возвращаемое командой return во включаемом коде (при этом выполнение включаемого сценария прекращается).
Пример верного и неверного сравнения возвращаемого значения конструкцией include:
// Неправильно: if (include ('file.php') == 'ok') { echo 'ok'; } // Правильно: if ((include 'file.php') == 'ok') { echo 'ok'; }
Эти директивы работают аналогично include и require, но позволяют не допускать повторного включения файлов. Их использование предотвращает вторичное объявление функций (что в php недопустимо и вызывает ошибку).
Иногда бывает нужно узнать какие файлы были подключены вышеописанными директивами. Для этого в php есть две идентичные функции: get_included_files и get_required_files. Каждая из них возвращает массив с именами включенных файлов. Вот вам пример использования:
include 'file1.php'; require_once 'file2.php'; var_dump(get_included_files());
Результатом будет вывод такого вида:
array(3) {
[0]=>
string(21) "index.php"
[1]=>
string(21) "file1.php"
[2]=>
string(21) "file2.php"
}
Первый элемент возвращаемого массива - имя исходного скрипта.
Комментарии
1. include может возвращать значение.
2. include файла которого нет, генерит warning или notice уже не помню
3. require файла которого нет генерит fatal error
4. В том то и дело что они работают не ака #include в си, по моему это только require себя так ведет
А если включение файлов по http отключена, то можно ли включать таким образом файлы по http, но с того же домена? Например если файл для включения находится в корне сайта, а файл из которого включается где-нибудь в папке на три уровня "в глубину". При указывании относительного пути можно ведь указывать только одну родительскую паку ../ , а как указать файл, если он лежит где-то выше?
По моему в таких случаях можно использовать что-нить вроде ../../../
Отправить комментарий