Подключение файлов в PHP. Принцип подключения файлов в PHP Функции include require в php

21.01.2018

Пока нет


Всем привет!
Продолжаем изучать основы PHP с нуля!
В этом уроке я расскажу вам, как подключить файл в php .
Зачем нужно подключать файл в php?

Минутку внимания, сейчас все узнаете.
Помните наш предыдущий урок №16, где я рассказывал о ?
Так вот, вы можете создать файл, например «function.php » и вписать туда все функции, которые вам нужно будет использовать для сайта. Останется только подключить файл «function.php » на странице сайта и все. Это удобно, а также нет на главной странице сайта кучу лишнего кода.

Наведу еще один пример, где можно использовать подключение внешних файлов php.
Например, у вас есть сайт из 100 страниц, который состоит из шапки, меню, контента и футера.
И вам вдруг нужно добавить в меню еще один раздел. Представьте: для этого нужно открыть 100 файлов, чтобы сделать исправление.

Но можно всего этого избежать, если создать отдельно файл, например, «menu.php » и подключить его к вашему сайту там, где должно быть меню. И после это, если вы сделаете исправление только в одном файле «menu.php », замена произойдет на остальных 100 страницах сайта автоматически. Таким способом вы можете подключить шапку сайта, футер и т.д. Удобно, не правда ли?
Я думаю, в конце этой статьи я покажу на примере, как это организовать.
Итак, чтобы подключить внешние файлы php, существуют две основные конструкции включений : require и include .

Конструкция включений include

Конструкция include позволяет включать файлы в код PHP скрипта во время выполнения сценария.

Синтаксис конструкции include:

Если в папке:

Создайте файл «function.php » вот таким кодом:

Теперь в файле «index.php » попробуем подключить файл «function.php » (строка №2):

Результат:

Внимание: бывают такие случаи, что вы можете забыть и попытаетесь подключить файл «function.php » еще раз (строка№2, №3):

В итоге может возникнуть фатальная ошибка или может вывестись еще раз содержимое файла. В моем случае будет ошибка:

Fatal error : Cannot redeclare Sreturn() (previously declared in O:\home\localhost\www\php\function.php:2) in O:\home\localhost\www\php\function.php on line 5

Если саму функцию убрать, а прописать текст (файл «function.php »):

Ну и, естественно, в файле «index.php » тоже уберите вывод функции:

то результат просто повторится.

Привет! Привет!

Чтобы не допустить таких ошибок и исключить повторное подключение файла, вместо инструкции «include » надо применять инструкцию «include_once » .

конструкции « include_once»

Синтаксис конструкции «include_once »:

Пример (строка №2, №3):

Хоть и два подключения, но файл будет подключен только один раз, то есть, подключение будет проигнорировано, так как файл уже подключен.

Конструкция включений require

Конструкция require позволяет включать файлы в сценарий PHP до исполнения сценария PHP.

Синтаксис конструкции «require »:

Если в папке:

Если у нас в коде встретятся несколько инструкций require , которые подключают один и тот же файл, то интерпретатор выдаст ошибку. Чтобы избежать данной ситуации, надо использовать инструкцию «require_once » :

конструкции «require_once»

Внимания: если подключить несуществующий файл через «include », «include_once », «require » или «require_once », то в результате будет ошибка:

Warning: include_once(function1.php) : failed to open stream: No such file or directory in O:\home\localhost\www\php\index.php on line 2

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

Разобьем этот сайт на такие файлы:

Итак, создайте папку «Experiment» на (или на хостинге). Там будет новый сайт для эксперимента.

В папке «Experiment » создайте еще одну папку под названием «include ». Как вы поняли, в папке «include » будут храниться файлы для подключения («menu.php », «heder.php » и «footer.php »).

Теперь зайдите в папку «include » и создайте там файл «menu.php » вот с таким кодом:

ГЛАВНАЯ ОБО МНЕ УСЛУГИ ОБРАТНАЯ СВЯЗЬ

Создайте еще один файл под названием «heder.php » и вставьте вот такой код:

сайт

обучение основам HTML

Создайте еще один файл под названием «footer.php » и вставьте вот такой код:

сайт © 2016

Теперь выходим из папки «include» и создаем главный файл «index.ph p»
(внимание: не «index.html », а именно «index.php ») вот с таким кодом:


ГЛАВНАЯ

Подключение файлов я сделал в строках №19, №32, №38.
Обратите внимания, что я просто участки кода, которые выводятся через «include_once », просто для понимания, а так комментарии можно убрать, код сократится и файл станет легче:

Практика по основам HTML на сайт


ГЛАВНАЯ

Здесь будет текст для главной страницы

Теперь дублируйте этот код для остальных файлов «obo-mne.php », «uslugi.php », «obratnaja-svjaz.php », только меняя текст заголовка и самого контента.

Вот и все, смотрите и проверяйте.
Для полного счастья (чтобы отображались картинки) не забудьте создать папку «image » с картинками.

Подписывайтесь на обновление блога, чтобы не пропустить вкусных уроков по основам PHP.

Предыдущая запись
Следующая запись

Для чего нужно использовать в файлах PHP оператора Include или Require ?
Очень удобно разбить одну большую программу или веб-страницу на несколько файлов. А бывает, что просто необходимо свой файл подключить к скрипту другого разработчика.

Расскажу один случай из моей жизни. Когда я начал заниматься изучением HTML, я создал свой первый сайт. Тогда я еще не знал, что существует язык программирования PHP. Сайт состоял из 100 страниц. Когда я добавлял статью, мне нужно было на каждой страничке в отдельности в меню указывать название и путь новой странички. Это был ужас, потому что, как вы понимаете, это занятие занимало уйму времени, пока я не узнал об операторе Include с возможностью подключать к своей странице сторонние файлы. Стоило мне только сделать изменение в одном стороннем файле, например, в меню, как на всех 100 страницах происходила замена. Удобно, быстро и модно .

Давайте на простом примере попробуем подключить к нашей веб-странице сторонний файл.

Создайте файл с именем «index.php » с таким кодом:

Куча текста……….

Можно вот так:

Операторы Include и Require на сайт Куча текста……….

Теперь создайте файл «cop.php » с таким кодом:


Результат:

Итак, что мы сделали?
В файле «index.php » мы осуществили подключение к стороннему файлу «cop.php ».

Если поменять текст в файле «cop.php », то в файле «index.php » вы увидите замену.

Шаблон оператора Include :

Шаблон оператора Require :

Еще один пример для закрепления темы.
У нас есть вот такая веб-страница:

Операторы Include и Require на сайт Главная Автор Контакты Куча текста……….
Все права защищены © 2012-2014..ru

Давайте теперь разобьем эту веб-страницу на два блока с помощью оператора Include или Require, как на схемке:

Это буде выглядеть вот так:

Операторы Include и Require на сайт Куча текста……….

Сохраните ее под именами «index.php », «avtor.php » и «kontakty.php »
То есть, получится три страницы «index.php », «avtor.php » и «kontakty.php ».

Теперь создайте файл «menu.php » для меню:

Главная Автор Контакты


Все права защищены © 2012-2014..ru

Результат:

Если поменять что-то в файле «cop.php » или «menu.php », то автоматически произойдет замена в трех файлах «index.php », «avtor.php » и «kontakty.php ». Попробуйте сами.

Вот и все! Подписывайтесь на обновление блога, чтобы не пропустить новых уроков PHP . Удачи!

Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓

Получай обновления блога!!! Подпишись:

Последние новости категории:

Очень часто бывает необходимость разбить одну большую программу на несколько файлов. Также бывает такое, что необходимо подключить скрипт другого разработчика к своей программе. И вот как раз о подключении в PHP сторонних файлов я и расскажу в этой статье.

Давайте для начала создадим файл "a.php ", в котором напишем такие строки:

echo "Это работа скрипта в файле a.php";
?>

Теперь давайте создадим ещё один файл (например, "b.php ") и подключим в нём скрипт "a.php ":

require "a.php";
?>

Как Вы догадались, подключение стороннего файла в PHP осуществляется с помощью конструкции require . Если выражаться простым языком, то эта конструкция просто копирует весь код из "a.php " и вставляет в "b.php ". Очень важный нюанс: путь к файлу должен быть написан верно, причём старайтесь писать относительный путь, а не абсолютный, так как написание абсолютных путей в конструкции require часто отключено в настройках PHP , в целях безопасности. Также Вы можете подключать не только PHP-файлы , но и любые другие. Например, часто подключаются HTML-файлы . В своё время, когда я делал один сайт, я чтобы не копировать определённые повторяющиеся вещи (например, меню, счётчики, копирайты и прочее), я запихнул их HTML-код в отдельный файл. А потом на каждой странице просто подключал эти файлы. В результате, чтобы внести изменение, например, в меню, мне достаточно было исправить один подключаемый файл, и сразу после этого весь сайт преображался. Так что эта конструкция крайне полезна, и, как минимум, экономит тучу времени.

Однако, очень важный момент. Как избежать такой проблемы: допустим два разработчика делают одну большую программу. Первый разработчик нашёл готовый вариант выполнения части своей задачи, и подключил его с помощью require . Второй разработчик так же нашёл абсолютно то же самое готовое решение для уже своей задачи, и так же с помощью require подключил скрипт. Затем когда оба разработчика соединят свои части в единое целое, появятся ошибки. Почему? А всё потому, что они один и тот же скрипт подключили два раза. Давайте посмотрим на простой пример:

require "a.php";
require "b.php";
echo "Это работа скрипта в файле c.php";
?>

Если Вы запустите данный скрипт, то обнаружите, что файл "a.php " подключался два раза, однако, мы же вызывали его всего один раз. Почему так вышло? А потому, что в файле "b.php " он также подключается. Вот такая проблема получается. И решается она очень просто: с помощью конструкции require_once . Она делает всё тоже самое, но если файл уже был подключен в этом скрипте, то подключать его не будет. Давайте исправим файл "b.php ":

require_once "a.php";
echo "Это работа скрипта в файле b.php";
?>

Теперь, если мы запустим скрипт "c.php ", то увидим, что файл "a.php " запустился как и положено всего один раз. Лично я Вам советую всегда использовать конструкцию require_once , если конечно Вам не нужно вставлять одно и то же по несколько раз (такое тоже иногда бывает нужно). Таким образом, Вы избежите лишних ошибок.

И, напоследок, хочется рассказать ещё о двух похожих конструкциях, с помощью которых тоже можно подключить в PHP сторонние файлы - это include и include_once . Они полностью аналогичны выше рассмотренным, но есть одно небольшое отличие. В случае конструкций require и require_once , если подключаемый файл не будет обнаружен, то выполнение скрипта прервётся. А при использовании include или include_once просто выведется предупреждение, и скрипт продолжит выполняться. Вот и вся разница. Советую даже проверить и убедиться уже в этом самостоятельно.

Одна из самых занимательных и полезных возможностей 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 и 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 и более раз, что скажется на некорректной работе страницы и получении соответствующего сообщения об ошибке.

Код PHP

Include_once "text.php"; // файл text.php будет подключен только один раз

// повторное подключения ниже не будет учтено и отображено
// и из-за него не будет выведено сообщение об ошибке
include_once "text.php"; // ничего не произойдёт

require и require_once

Инструкции require и require_once работают идентично include и include_once за исключением лишь одной особенности - в случае того, если подключаемый файл не будет найден, выполнение скрипта будет остановлено (сценарий дальше не будет считываться), в то время как include и include_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 , перед подключением, вставьте следующую строку

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

Последнее обновление: 1.11.2015

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

Инструкция include

Инструкция include подключает в программу внешний файл с кодом php. Например, определим файл factorial.php :

Здесь происходит вычисление факториала. Теперь подключим данный файл в нашу программу:

В место определения инструкции include будет вставляться весь код из файла factorial.php . При этом вставка файла должна происходить до использования функции, определенной в этом файле.

Инструкция include_once

Использование инструкции include имеет недостатки. Так, мы можем в разных местах кода неумышленно подключить один и тот же файл, что при выполнении кода вызовет ошибки.

Чтобы исключить повторное подключение файла, вместо инструкции include надо применять инструкцию include_once

И теперь, если мы подключим этот же файл с помощью include_once еще где-нибудь ниже, то это подключение будет проигнорировано, так как файл уже подключен в программу.

Инструкции require и require_once

Действие инструкции require подобно инструкции include: она также подключает внешний файл, вставляя в программу его содержимое. Только теперь, если данный файл не будет найден, действие программы прекратится:

И также если у нас в коде встретятся несколько инструкций require , которые подключают один и тот же файл, то интерпретатор выдаст ошибку. И также чтобы избежать данной ситуации, надо использовать инструкцию require_once :