Урок 8. Подключение файла в PHP. Include и require

Урок 8. Подключение файла в PHP. Include и require

Coding


Основы

Одна из самых занимательных и полезных возможностей php - подключение другого файла. Например, на сайте есть верхнее меню, нижнее и между ними само содержание страницы.

И, например, на 10 страницах сайта используется нижнее меню. В какой-то момент в него потребовалось внести изменения. В html Вы бы вручную в каждом отдельном файле вносили изменения, но php позволяет существенно упростить работу с сайтом!

Код нижнего меню может содержаться в отдельном файле, а на каждой из 10-ти страниц можно просто подключать этот отдельный файл!

То есть все изменения нужно теперь вносить только в файл с меню, а на 10-ти других оно будет отображаться уже с изменениями.


Смысл подключения в php простым русским языком:


Файл 1.php

Верхнее меню


Файл 2.php

Нижнее меню


Файл example.php

Подкючаем Файл 1.php

Содержание страницы

Подкючаем Файл 2.php


В результате проработки файла example.php будет отображено

Верхнее меню

Содержание страницы

Нижнее меню


Соответственно, чтобы что-либо изменить в нижнем меню, нужно внести изменения только в файле 2.php



Путь к файлу


Подключение файла происходит согласно указанному к файлу пути. Есть два варианта пути: относительный и абсолютный. Относительный - это указание пути к подлючаемому файлу относительно файла с инструкцией подключения. Абсолютный - указание полного пути к подключаемому файла.


Код PHP

// пример относительного пути
include "include/ваш_файл.php"; // файл лежит в папке include, которая находится в той же директории, что и файл с подключением

// пример абсолютного пути
include $_SERVER['DOCUMENT_ROOT']."/include/ваш_файл.php"; // $_SERVER['DOCUMENT_ROOT'] - указывает корневую директорию сайта



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

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


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




Include и Include_once


include() - конструкция, предназначенная для включения файлов в код сценария PHP во время исполнения сценария PHP. При обработке кода инструкция заменяется на содержимое присоединяемого файла. Предлагаю сразу рассмотреть пример.


Рассмотрим работу include на примере двух файлов: index.php и text.php. Для простоты работы допустим, что они лежат в одной директории.


Код PHP (файл index.php)

<?php

echo "Обычный текст, содержащийся в основном файле";
include 'text.php'; // подключаем содержимое файла text.php

?>


Код PHP (файл text.php)

<?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. Попробуйте указать не относительный путь, а абсолютный (полный путь к файлу). 


Пример

include "http://www.example.com/include/ваш_файл.php";

// DOCUMENT_ROOT - обозначает корневую директорию ресурса
include $_SERVER['DOCUMENT_ROOT']."/include/ваш_файл.php";



6. Если у Вас не подключается файл и не отображается никакой ошибки, то в директории с файлом, который подключаете, создайте файл .htaccess со следующим содержимым


php_flag display_errors On


или в файле php, перед подключением, вставьте следующую строку


error_reporting( E_ALL );


И та, и другая настройки будут принудительно отображать ошибки


Report Page