- PHP Include Files
- PHP include and require Statements
- Syntax
- PHP include Examples
- Example 1
- Example
- Welcome to my home page!
- Example 2
- Example
- Welcome to my home page!
- Example 3
- Example
- Welcome to my home page!
- PHP include vs. require
- Example
- Welcome to my home page!
- Example
- Welcome to my home page!
- Урок 8. Подключение файла в PHP. Include и require
- Путь к файлу
- include и include_once
- require и require_once
- Если не работает include или require
- include()
PHP Include Files
The include (or require ) statement takes all the text/code/markup that exists in the specified file and copies it into the file that uses the include statement.
Including files is very useful when you want to include the same PHP, HTML, or text on multiple pages of a website.
PHP include and require Statements
It is possible to insert the content of one PHP file into another PHP file (before the server executes it), with the include or require statement.
The include and require statements are identical, except upon failure:
- require will produce a fatal error (E_COMPILE_ERROR) and stop the script
- include will only produce a warning (E_WARNING) and the script will continue
So, if you want the execution to go on and show users the output, even if the include file is missing, use the include statement. Otherwise, in case of FrameWork, CMS, or a complex PHP application coding, always use the require statement to include a key file to the flow of execution. This will help avoid compromising your application’s security and integrity, just in-case one key file is accidentally missing.
Including files saves a lot of work. This means that you can create a standard header, footer, or menu file for all your web pages. Then, when the header needs to be updated, you can only update the header include file.
Syntax
PHP include Examples
Example 1
Assume we have a standard footer file called «footer.php», that looks like this:
To include the footer file in a page, use the include statement:
Example
Welcome to my home page!
Some text.
Some more text.
Example 2
Assume we have a standard menu file called «menu.php»:
All pages in the Web site should use this menu file. Here is how it can be done (we are using a element so that the menu easily can be styled with CSS later):
Example
Welcome to my home page!
Some text.
Some more text.
Example 3
Assume we have a file called «vars.php», with some variables defined:
Then, if we include the «vars.php» file, the variables can be used in the calling file:
Example
Welcome to my home page!
echo «I have a $color $car.»;
?>
PHP include vs. require
The require statement is also used to include a file into the PHP code.
However, there is one big difference between include and require; when a file is included with the include statement and PHP cannot find it, the script will continue to execute:
Example
Welcome to my home page!
echo «I have a $color $car.»;
?>
If we do the same example using the require statement, the echo statement will not be executed because the script execution dies after the require statement returned a fatal error:
Example
Welcome to my home page!
echo «I have a $color $car.»;
?>
Use require when the file is required by the application.
Use include when the file is not required and application should continue when file is not found.
Урок 8. Подключение файла в PHP. Include и require
Одна из самых занимательных и полезных возможностей php — подключение другого файла. Например, на сайте есть верхнее меню, нижнее и между ними само содержание страницы. И, например, на 10 страницах сайта используется нижнее меню. В какой-то момент в него потребовалось внести изменения. В html Вы бы вручную в каждом отдельном файле вносили изменения, но php позволяет существенно упростить работу с сайтом! Код нижнего меню может содержаться в отдельном файле, а на каждой из 10-ти страниц можно просто подключать этот отдельный файл! То есть все изменения нужно теперь вносить только в файл с меню, а на 10-ти других оно будет отображаться уже с изменениями.
Смысл подключения в php простым русским языком:
Файл 1.php
Верхнее меню
Файл 2.php
Нижнее меню
Файл example.php
Подкючаем Файл 1.php
Содержание страницы
Подкючаем Файл 2.php
В результате проработки файла example.php будет отображено
Верхнее меню
Содержание страницы
Нижнее меню
Соответственно, чтобы что-либо изменить в нижнем меню, нужно внести изменения только в файле 2.php
Путь к файлу
Подключение файла происходит согласно указанному к файлу пути. Есть два варианта пути: относительный и абсолютный. Относительный — это указание пути к подлючаемому файлу относительно файла с инструкцией подключения. Абсолютный — указание полного пути к подключаемому файла.
// пример относительного пути
include "include/ваш_файл.php"; // файл лежит в папке include, которая находится в той же директории, что и файл с подключением
// пример абсолютного пути
include $_SERVER['DOCUMENT_ROOT']."/include/ваш_файл.php"; // $_SERVER['DOCUMENT_ROOT'] - указывает корневую директорию сайта
include и include_once
include() — конструкция, предназначенная для включения файлов в код сценария PHP во время исполнения сценария PHP. При обработке кода инструкция заменяется на содержимое присоединяемого файла. Предлагаю сразу рассмотреть пример.
Рассмотрим работу include на примере двух файлов: index.php и text.php. Для простоты работы допустим, что они лежат в одной директории.
Код PHP (файл index.php)
echo "Обычный текст, содержащийся в основном файле";
include 'text.php'; // подключаем содержимое файла text.php
?>
Код PHP (файл text.php)
echo "Текст, содержащийся в подключаемом файле";
?>
В результате работы файла index.php отобразится:
Обычный текст, содержащийся в основном файле
Текст, содержащийся в подключаемом файле
Правда удобно? Теперь, поменяв содержимое в файле text.php будет совершенно другой результат работы index.php!
Теперь поговорим о другой конструкции — include_once. Она работает абсолютно также как и include, только создана позже и для тех случаев, когда нельзя повторно подключить файл. Например, Вы боитесь, что в результате ошибки можете подключить файл 2 и более раз, что скажется на некорректной работе страницы и получении соответствующего сообщения об ошибке.
include_once 'text.php'; // файл text.php будет подключен только один раз
// повторное подключения ниже не будет учтено и отображено
// и из-за него не будет выведено сообщение об ошибке
include_once 'text.php'; // ничего не произойдёт
require и require_once
Инструкции require и require_once работают идентично include и include_once за исключением лишь одной особенности — в случае того, если подключаемый файл не будет найден, выполнение скрипта будет остановлено (сценарий дальше не будет считываться), в то время как include и include_once просто выводят предупреждение и продолжают дальнейшее выполнение скрипта.
Постарайтесь в дальнейшем отказаться от использования include и require, применяйте их аналоги с суффиксом _once. В результате это упростит разбиение большой и сложной программы на относительно независимые модули. |
Если не работает include или require
Чтобы понять причины того, почему не работает include, предлагаю проверить всё по шагам. Какими бы понятными и поверхностными не были указанные ниже пункты, проверьте всё с самого начала
1. Проверьте, работает ли Ваш сервер и php, работает ли вообще любой php код на сайте
2. Убедитесь, существует ли файл подключаемый файл
3. Проверьте, правильно ли введено название файла и расширение в подключении
4. Убедитесь, что подключаемый php-файл действительно находится по тому адресу, по которому указали
5. Попробуйте указать не относительный путь, а абсолютный (полный путь к файлу).
Пример Код PHP
include "http://www.example.com/include/ваш_файл.php";
// DOCUMENT_ROOT - обозначает корневую директорию ресурса
include $_SERVER['DOCUMENT_ROOT']."/include/ваш_файл.php";
6. Если у Вас не подключается файл и не отображается никакой ошибки, то в директории с файлом, который подключаете, создайте файл .htaccess со следующим содержимым
php_flag display_errors On
или в файле php, перед подключением, вставьте следующую строку
И та, и другая настройки будут принудительно отображать ошибки
include()
Оператор include() подключает и вычисляет специфицированный файл.
Нижеследующая документация применима также к require(). Эти две конструкции идентичны во всём, кроме обработки облома. include() выводит Warning!, а require() выдаёт Fatal Error. Иначе говоря, используйте require(), если вы хотите, чтобы отсутствие файла останавливало процессинг страницы. include() не работает таким образом, скрипт продолжит выполнение. Не забудьте также о соответствующей установке include_path.
Когда файл подключён/included, содержащийся в нём код наследует область видимости переменной строки, на которой возникло подключение. Любые переменные, доступные на этой строке в вызывающем файле, будут доступны в вызываемом файле, вперёд от этой точки.
Пример 1. Базовый пример include()
$color = 'green'; $fruit = 'apple';
echo "A $color $fruit"; // A include 'vars.php'; echo "A $color $fruit"; // A green apple
Если подключение возникает внутри функции в вызываемом файле, то весь код, содержащийся во включаемом файле, будет работать так, как если бы он был определён внутри. Так что он будет следовать области видимости переменной.
Пример 2. Подключение внутри функций
function foo() < global $color; include 'vars.php'; echo "A $color $fruit"; >/* vars.php находится в области видимости foo(), поэтому * * $fruit НЕ доступна вне это области видимости * * $color доступна, поскольку мы объявили её как глобальную. */ foo(); // A green apple echo "A $color $fruit"; // A green
Когда файл подключается, разбор переходит из режима PHP в режим HTML в начале целевого файла и вновь продолжает после конца. Исходя из этого, любой код внутри файла назначения, который должен выполняться как PHP-код, обязан быть заключён в правильные стартовый и конечный тэги РНР.
Если «URL fopen-оболочки» включены в PHP (как в конфигурации по умолчанию), вы можете специфицировать файл, подключаемый с использованием URL (через HTTP), вместо локального pathname. Если целевой сервер интерпретирует целевой файл как PHP-код, переменные могут передаваться в подключаемый файл с использованием URL-строки запроса, как в HTTP GET. Строго говоря, это не то же самое, что подключение файла и наследование им области видимости переменных родительского файла; ведь скрипт работает на удалённом сервере, а результат затем подключается в локальный скрипт.
Windows-версия PHP в настоящее время не поддерживает доступ к удалённым файлам с помощью этой функции, даже если allow_url_fopen включена.
Пример 3. include() через HTTP
/* Здесь предполагается, что www.example.com сконфигурирован для разбора .php * * файлов, а не .txt файлов. Также 'Works' здесь означает, что переменные * * $foo и $bar доступны в подключённом файле. */ // Не будет работать; file.txt не был обработан www.example.com как PHP include 'http://www.example.com/file.txt?foo=1&bar=2'; // Не будет работать; ищет файл 'file.php?foo=1&bar=2' в локальной // файловой системе. include 'file.php?foo=1&bar=2'; // Работает. include 'http://www.example.com/file.php?foo=1&bar=2'; $foo = 1; $bar = 2; include 'file.txt'; // Работает. include 'file.php'; // Работает.
Поскольку include() и require() являются специальными конструкциями языка, вы обязаны заключить их в блок операторов, если это внутри условного блока.
Пример 4. include() и условные блоки
// Это НЕПРАВИЛЬНО, и не будет работать так, как ожидается. if ($condition) include $file; else include $other; // Это КОРРЕКТНО. if ($condition) < include $file; >else
Обработка возвращает: можно выполнить оператор return() внутри подключённого файла, чтобы прервать обработку этого файла и возвратиться в скрипт, вызвавший его. Также можно возвращать значения из подключённых файлов. Вы можете принять значение вызова include как обычно.
Примечание: в PHP 3 возвращаемое значение может не появиться внутри блока, если это не блок функции; в этом случае return() применяется к этой функции, а не ко всему файлу.
Пример 5. include() и оператор return()
$foo = include 'return.php'; echo $foo; // печатает 'PHP' $bar = include 'noreturn.php'; echo $bar; // печатает 1
$bar имеет значение 1, поскольку подключение было успешным. Обратите внимание на отличия в примерах. Первый использует return() внутри подключённого файла, а другие — нет.
Пример 6. Использование буферизации вывода для включения PHP файлов
$string = get_include_contents('somefile.php'); function get_include_contents($filename) < if (is_file($filename)) < ob_start(); include $filename; $contents = ob_get_contents(); ob_end_clean(); return $contents; >return false; >
Пример 7. Универсальное использование включения файла без привязки к текущему каталогу
include $_SERVER['DOCUMENT_ROOT']."/lib/sample.lib.php";
Пример 8. Включение файла изображения
header('Content-type: image/jpeg'); header('Content-Disposition: inline;'); include '/some_image.jpg'; echo 'This file was provided by example@user.com.';
Другие способы чтения файлов в переменные возможны с помощью функций: fopen(), file() или путём использования include() вместе с Функциями управления выводом.