php require once require include
Урок 8. Подключение файла в PHP. Include и require
Основы
Смысл подключения в php простым русским языком:
Файл 1.php
Верхнее меню
Файл 2.php
Нижнее меню
Файл example.php
Подкючаем Файл 1.php
Содержание страницы
Подкючаем Файл 2.php
В результате проработки файла example.php будет отображено
Верхнее меню
Содержание страницы
Нижнее меню
Соответственно, чтобы что-либо изменить в нижнем меню, нужно внести изменения только в файле 2.php
Путь к файлу
Код PHP
Если путь не указан, будет использоваться путь, который указан в директиве include_path (в конфигурационном файле php.ini). Если файл не найден по указанному пути в include_path, инструкция include попытается проверить текущую рабочую директорию, в которой находится скрипт подключающий файл, если конструкция include не сможет найти файл, будет выдано предупреждение (warning). |
include и include_once
Рассмотрим работу include на примере двух файлов: index.php и text.php. Для простоты работы допустим, что они лежат в одной директории.
Код PHP (файл index.php)
Код PHP (файл text.php)
В результате работы файла index.php отобразится:
Обычный текст, содержащийся в основном файле
Текст, содержащийся в подключаемом файле
Правда удобно? Теперь, поменяв содержимое в файле text.php будет совершенно другой результат работы index.php!
Код PHP
require и require_once
Постарайтесь в дальнейшем отказаться от использования include и require, применяйте их аналоги с суффиксом _once. В результате это упростит разбиение большой и сложной программы на относительно независимые модули. |
Если не работает include или require
Чтобы понять причины того, почему не работает include, предлагаю проверить всё по шагам. Какими бы понятными и поверхностными не были указанные ниже пункты, проверьте всё с самого начала
1. Проверьте, работает ли Ваш сервер и php, работает ли вообще любой php код на сайте
2. Убедитесь, существует ли файл подключаемый файл
3. Проверьте, правильно ли введено название файла и расширение в подключении
4. Убедитесь, что подключаемый php-файл действительно находится по тому адресу, по которому указали
5. Попробуйте указать не относительный путь, а абсолютный (полный путь к файлу).
Пример Код PHP
6. Если у Вас не подключается файл и не отображается никакой ошибки, то в директории с файлом, который подключаете, создайте файл .htaccess со следующим содержимым
или в файле php, перед подключением, вставьте следующую строку
И та, и другая настройки будут принудительно отображать ошибки
PHP include и require
Чтобы сделать программный код более удобочитаемым, вы можете к примеру поместить определения функций и/или классов в отдельный файл. Возможность подключения файлов в PHP обеспечивают четыре языковые инструкции:
Все четыре инструкции могут принимать в качестве параметра имя локального файла. Инструкция include и require очень схожи по действию и отличаются лишь реакцией на невозможность получения запрошенного ресурса. Например, в случае недоступности ресурса include и include_once выводят предупреждение и пытаются продолжить исполнение программы. require и require_once при недоступности запрошенного ресурса останавливают обработку данной страницы.
include
Инструкция include позволяет подключать и присоединять к вашему PHP-сценарию другие сценарии. При запуске программы интерпретатор просто заменит инструкцию на содержимое подключаемого файла. Давайте посмотрим как это работает, создайте файл с именем add.php и напишите внутри:
Как видно из примера инструкция include присоединяет содержимое подключаемого файла, благодаря этому ваша программа получает доступ к другим переменным, функциям, классам и т.д.
Подключение внутри функции
Если подключение файла происходит внутри функции, тогда весь код, содержащийся во включаемом файле, будет вести себя так, как будто он был определен внутри этой функции, т.е. код будет иметь локальную область видимости. Перепишем немного предыдущий пример:
Теперь добавим функцию в test.php :
Путь к файлу
include_once
В test.php попытаемся выполнить следующий код:
require и require_once
Инструкции require и require_once работают идентично include и include_once за исключением лишь одной особенности. Если подключаемый файл не будет найден, выполнение скрипта будет остановлено, в то время как include и include_once выводят предупреждение и продолжают выполнение скрипта.
Подключение файлов в PHP
В PHP существует возможность подключения PHP (и не только) файлов в другие. Благодаря этому мы можем разделить большой скрипт или вёрстку сайта на несколько частей.
Функция include
Представим, что у нас в корне сайта лежат файлы index.php и config.php. И мы хотим в первый файл подключить второй. Это можно сделать так:
index.php
config.php
Функция include подключает содержимое скрипта config.php, как если бы код этого скрипта находился в самом index.php.
Результат запуска скрипта index.php:
В данном примере мы указали относительный путь к скрипту, т.е. путь относительно вызывающего скрипта. Эту тему мы подробно разберём на уроке Абсолютные и относительные пути в PHP.
Функция require
Разница в том, что при невозможности подключения файла (файл отсутствует или недостаточно прав) функция include() покажет ошибку и продолжит работу, а require() покажет ошибку и остановит выполнение скрипта.
Функции include_once и require_once
При использовании функций с приставкой _once вы запрещаете повторное подключение скрипта. При попытке повторного подключения PHP сгенерирует ошибку.
После этой ошибки include_once() продолжит работу, а require_once() остановит скрипт.
Получение данных из подключаемого скрипта
Подключаемый скрипт может передать подключающему скрипту какие-либо данные с помощью оператора return :
index.php
config.php
Область видимости подключаемых файлов
Все переменные, функции и т.п., объявленные в подключаемом файле, будут видны в исходном. При этом переменные подключаются в текущую область видимости. Т.е. если подключить файл внутри функции, то переменные будут видны только в ней:
Include, Require и комментарии PHP
В этой статье мы рассмотрим:
Комментарии PHP
На приведенном ниже изображении показан PHP-файл с однострочным комментарием и комментарием из нескольких строк:
PHP Include и PHP include_once
Синтаксис оператора include :
Пример: Include / Include_once
Предположим, что вы разрабатываете сайт, который содержит одинаковое меню навигации на всех страницах.
Мы создадим для файла:
В результате использования include PHP путь к файлу будет выведен заголовок страницы.
PHP Require & PHP require_once
Require_once игнорируется, если требуемый файл уже был добавлен любым из четырех операторов.
Он имеет следующий синтаксис:
Разница между Include и Require
Include | Require |
Выдает предупреждение при возникновении ошибки. | Не выдает предупреждение. |
Выполнение скрипта продолжается при возникновении ошибки. | Выполнение скрипта останавливается при возникновении ошибки. |
Пример: Require
Предположим, что мы разрабатываем приложение для работы с базой данных. Можно создать конфигурационный файл, который будет подключаться на всех страницах проекта с помощью require :
Рассмотрим пример подключения конфигурационного файла:
Require и Require_once
Заключение
Пожалуйста, опубликуйте ваши отзывы по текущей теме материала. За комментарии, отклики, дизлайки, подписки, лайки огромное вам спасибо!
Что правильнее использовать – require или include?
Как вы знаете, в PHP имеется 4 функции для подключения других файлов. Это include, include_once, require и require_once. Чем же они различаются и как правильно их использовать?
Для начала разберём разницу между include и require. Эти две функции различаются только реакцией на отсутствие подключаемого файла. Функция include (“включить”) при отсутствии указанного файла выдаст сообщение об ошибке типа E_WARNING, но выполнение программы продолжится. В отличие от неё, require (“требовать”) при отсутствии подключаемого файла выдаёт фатальную ошибку (E_ERROR), которая приводит к немедленной остановке выполняемого скрипта.
Таким образом, на основании знаний о том, как выполняется ваш код, вы можете использовать тот или иной оператор. Например, если это просто кусок HTML, который в целом не влияет на ход работы программы, или это какие-то второстепенные подключаемые модули, без которых остальная программа может нормально функционировать, то смело используйте include. В остальных же случаях я рекомендую использовать require. Это предотвратит возможность некорректного выполнения кода и в случае ошибки (например, подключаемый файл удалён вирусом или потерялся в процессе разработки) будет просто завершать скрипт. В одной из будущих статей я покажу вам как отслеживать абсолютно все нестандартные ситуации в коде и быть в курсе происходящего внутри сайта.
Теперь рассмотрим конструкции include_once и require_once. От простых include и require они отличаются окончанием “_once”, которое предотвращает повторное подключение тех же самых файлов.
Скажем, если в вашем подключаемом файле есть описания классов или функций, то такой файл подключать повторно нельзя, поскольку он будет исполнен заново и PHP выдаст фатальную ошибку при попытке определить классы или функции с уже существующими именами. Нет сомнений, что можно построить код таким образом, чтобы повторное подключение никогда не происходило, но это лишние ограничения и лишняя работа. Поэтому функции с суффиксом “_once” полезны и нужны.
В своей практике я использую два вида файлов. Первый вид – это файлы, содержащие один или несколько классов и не содержащие кода, исполняемого “напрямую”. Такие файлы всегда подключаю с помощью require_once. Второй вид – это шаблоны или куски шаблонов, содержащие HTML и немного PHP-кода. Такие файлы подключаю с помощью require, поскольку иногда один и тот же кусок шаблона может быть использован на странице несколько раз.
Я никогда не использую include и include_once, поскольку считаю отсутствие файла, который должен быть, критической ситуацией, требующей немедленного решения без каких-либо компромиссов. А если мне нужно подключать файл, наличие которого под сомнением, то я просто предварительно проверяю его наличие с помощью is_file().
Существует ещё одна фишка при использовании include. Несмотря на то, что на самом деле это не функция, а языковая конструкция, внутри подключаемого файла работает оператор return. И, стало быть, include возвращает это значение вызываемому коду. Это выглядит вот так
$ret = include ‘file.php’;
На сегодня это всё, программируйте правильно!