php config php include
Подключение файлов в 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
Область видимости подключаемых файлов
Все переменные, функции и т.п., объявленные в подключаемом файле, будут видны в исходном. При этом переменные подключаются в текущую область видимости. Т.е. если подключить файл внутри функции, то переменные будут видны только в ней:
Урок 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, перед подключением, вставьте следующую строку
И та, и другая настройки будут принудительно отображать ошибки
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
Заключение
Пожалуйста, опубликуйте ваши отзывы по текущей теме материала. За комментарии, отклики, дизлайки, подписки, лайки огромное вам спасибо!
Очередной глупый вопрос. Как сделать свой файл конфиг?
создаете файл config.php (название не принципиально)
в index.php, там где у вас идет html c header footer content body head
вставляете следующий код в самое начало файла:
Сам файл конфиг php имеет следующее содержание:
Далее в файле где подключали config.php через include.
В месте где нужно вывести значение из конфига:
Под конфиги есть один очень удобный подход: конфиги в константах класса.
Смысл в следующем, создаете базовый конфиг, например DefaultConfig.php настройки забиваете под окружение для разработки
Так же создаете конфиг, который будет подключаться в вашем проекте Config.php (игнорируется git/svn/или что у вас там)
За счет этого подключение к БД у вас может выглядеть так:
Подключение файлов в PHP
В PHP имеется возможность подключать файлы с кодом внутри других файлов. Это делается для того, чтобы выстроить архитектуру приложения.
Архитектура программного обеспечения (англ. software architecture) — совокупность важнейших решений об организации программной системы. Архитектура включает:
То есть нам нужно разбивать наш код на отдельные части, каждая из которых будет выполнять свою роль. К примеру, можно вынести какие-то функции в отдельный файл, подключить этот файл внутри другого, и пользоваться ими уже в этом файле.
Смысл архитектуры в том, чтобы компоненты программы, отвечающие за какое-то похожее поведение, лежали в одном месте, и их можно было легко найти и изменить.
Ну а вообще, давайте на примере. Но сначала давайте изучим одну «магическую» константу. Речь идёт о константе __DIR__. В ней содержится путь до директории, в которой находится текущий скрипт (скрипт, в котором эта константа была использована).
Давайте запишем в наш index.php следующий код:
Результат этого кода:
Вуаля, мы теперь знаем, в какой папке находится index.php. Мы будем всегда использовать магическую константу __DIR__ при указании путей подключаемых файлов. При этом в выражениях для подключения файлов следует избегать данных от пользователей, чтобы избежать хакерских атак под названием PHP-injections. Подробнее читайте здесь.
Ну а теперь вернёмся к основной теме урока. Создадим в директории с index.php ещё один файл с именем functions.php и заполним его следующим содержимым:
Теперь вернёмся в index.php и запишем в него следующий код:
Надеюсь, никто не забыл, что можно вставлять PHP-код прямо внутри HTML? Об этом мы говорили в этом уроке. Только там мы использовали для вывода конструкцию вида:
Если во вставке нам нужно только вывести результат какого-то выражения, то её можно упростить до:
И если сейчас мы зайдём в браузере на URL нашего приложения, то увидим следующее:
Наше приложение успешно отработало, и основной код страницы у нас не содержит вспомогательных функций – они с помощью директивы include подключились в наш файл. Если говорить более детально – PHP-код из файла functions.php был вставлен в то место, где он был подключен с помощью директивы include.
Разница между require и include
Есть ещё одна директива для подключения файлов – require. Если вы сейчас замените include на require, вот так:
то ничего по сути не изменится – код отработает точно так же.
Однако между ними всё же есть разница. Она заключается в том, что если подключаемый файл не найден, то при include возникнет warning, но программа продолжит своё выполнение. А если подключаемого не окажется при попытке выполнить require, то произойдёт фатальная ошибка и скрипт завершит свою работу.
Давайте снова вернём директиву include, переименуем functions.php в abc.php и попробуем обновить страничку.
Получили ошибки разных типов. Первая из них – warning, сообщающий о том, что файл functions.php не найден. Но скрипт продолжил своё выполнение, а затем упал на строке 10 из-за того, что не была найдена функция isEven(), а это уже fatal error.
Давайте теперь заменим include на require и снова обновим страничку.
Теперь мы получили fatal error сразу на второй строке, приложение завершило свою работу на этом месте.
То есть require нужно использовать там, где подключение файла обязательно. Например, файл с конфигурацией, или необходимыми функциями.
А include можно использовать для файлов, которые необязательно должны быть подключены (если без них можно продолжать выполнение кода). Пример: файл с кодом баннерной рекламы. Да, реклама не покажется, но зато сайт продолжит свою работу.
Как ещё можно использовать require и include
Помимо того, что можно подключать файлы с PHP-кодом, можно также подключать файлы, содержащие какой-то текст, или в частности HTML-код.
Предлагаю рассмотреть следующую ситуацию: у нас на сайте всегда одинаковая шапка, боковая панель, и футер, но при этом меняются заголовок и содержимое страницы. Предположим, наш сайт выглядит так:
Зелёным цветом я выделил ту часть странички, которая будет изменяться.
Давайте для начала сверстаем наш шаблон. Надеюсь, все прошли курс по HTML. У меня получился вот такой код:
Вот такая получилась у меня веб-страничка:
Давайте теперь разобьём этот код на компоненты. Создадим 4 файла: header.php с шапкой файла, sidebar.php с боковой колонкой, content.php с основным содержимым страницы и footer.php для подвала сайта.
А теперь вернёмся в index.php и запишем в него следующий код:
Обновим страничку и увидим, что она по-прежнему работает. Только теперь она собралась из маленьких кусочков, каждый из которых отвечает за свою часть.
А в файле content.php выведем эту переменную:
Давайте теперь снова обновим страничку:
Та-да! Наша страничка сформировалась динамически! Мало того, что она была собрана из разных компонентов, так она ещё и выводит значения из переменных.
Директивы require_once и include_once
Иногда нужно, чтобы файл подключился только один раз. Например, чтобы только однажды подключить файл с функциями. Для этого используются директивы require_once и include_once.
Давайте создадим файл config.php и запишем в него следующее содержимое:
И теперь создадим файл test.php и напишем следующий код:
Теперь давайте запустим test.php, перейдя по адресу в браузере: http://myproject.loc/test.php
И увидим, что текст вывелся только однажды.
Теперь давайте заменим include_once на include:
А вот теперь код подключился несколько раз:
Вот такие пирожки. Чуть позже мы ещё вернёмся к теме этих отличий, и когда именно стоит использовать include_once и require_once.
А пока что на этом всё. Делайте домашнее задание и до встречи на следующих уроках!