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

Последнее обновление: 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 :

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.

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

Заметка: активирована адаптивная версия сайта, которая автоматически подстраивается под небольшой размер Вашего браузера и скрывает некоторые детали сайта для удобства чтения. Приятного просмотра!

Доброго времени суток всем читателям блога Site on! Последние 2 месяца моя работа на компанию тесно связана с чистым PHP (на использование фреймворков и CMS - табу), уже забыл что такое Joomla:) поэтому как никогда уместно будет продолжить писать и выше.

Сегодня мы поговорим о том, как устроено подключение файлов в PHP. Как вы могли заметить, любой движок для сайта (Joomla, Wordpress, OpenCart, DLE и все, все, все) состоит из тысяч.php (и не только php) файлов и все они взаимодействуют между собой, что собственно, и образует механизм работы сайта.

А теперь забудьте о движках и представьте себе другой пример: у нас есть множество страниц на сайте, в каждой из них одинаковое меню, шапка сайта и подвал. Естественно, мы не будет копировать одно и то же из файла в файл, иначе это бы получился древний HTML-сайт образца 90-х. Как минимум, мы разобьём всё на 4 файла:

  • index.php – основная часть страницы, этот файл будет меняться
  • menu.php – меню сайта
  • header.php – шапка сайта
  • footer.php – подвал сайта

Кроме главной страницы (index.php) у нас, например, ещё могут быть страницы с перечнем товаров (category.php) и страницы самих товаров (product.php). К этим страницам будет удобно подключать файлы menu.php, header.php, footer.php. Благодаря такому подходу в случае, если у нас добавиться новый пункт меню, то мы добавим его всего один раз (в menu.php), а не 3 раза (в index.php, product.php, category.php).

Следовательно, возникает вопрос: "Как в PHP присоединить файл?" . Для этих целей в PHP существует 2 инструкции:

И их производные:

Обращаю ваше внимание на то, что include и require – это не функции, это так называемые языковые конструкции, поэтому скобочки не нужны.

В чём разница include и require

include и require – это абсолютно одно и тоже, с одной только разницей, что при ошибке (например, если указанного файла не существует и его невозможно подключить) include выдаст ошибку типа Warning , после чего сайт продолжит работу, а require при этом выдаст , которая полностью остановит дальнейшую загрузку страницы.

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

include_once и require_once – делают тоже, что и include (подключают файл), но при этом они следят, чтобы каждый файл был подключён не больше одного раза. Их особенно удобно использовать, если над проектом работают несколько человек и вам нужно проследить, чтобы какой-то файл не добавили несколько раз.

Внимание:

include_once и require_once – работают медленнее и потребляют больше оперативной памяти, чем include и require. Это логично и связано с тем, что им приходится запоминать все файлы, которые были подключены и каждый раз при подключении проверять: а не был ли этот файл уже подключён.

Давайте я наглядно проиллюстрирую как работает подключение файлов в PHP:

При подключении файлов (любых, например: html, txt, php, xml и тд.) PHP скрипт их содержимое тупо вставляется на место include. Другими словами include (а также я подразумеваю require, так как это одно и то же) – это всё равно, что вы скопировали откуда-то код (CTRL+C) и вставили (CTRL+V) в файл (например, в product.php), а затем сохранили и запустили как обычно: http://ваш_сайт.net/product.php

Для того чтобы различать основные файлы, такие как product.php от тех, которые мы к нему подключаем (menu.php, header.php, footer.php), подключаемые файлы переименовывают так: menu.inc.php, header.inc.php, footer.inc.php. Благодаря этому, когда мы зайдём в папку, мы сразу увидим – где основные файлы, а где вспомогательные.

Внимание:

Этот приём (дописывать inc) используется только для визуального удобства и никаких функциональных отличий в себе не несёт. Но визуальное удобство тоже очень важно, поэтому старайтесь всё и всегда структурировать и делать в одном стиле.

include с возвратом значения

Помните ключевое слово ? Так вот в PHP есть такая дикая вещь, как return внутри include. Я никогда этим не пользовался и никогда не видел, чтобы это использовали другие, но такая возможность есть, держите пример some.php:

Подключаем some.php:

// Выводит строку: PHP ?>

Ещё немного фактов

  • Подключать файлы можно в любом месте PHP кода, в том числе и внутри ;
  • Подключение (include) срабатывает во время исполнения скрипта, заранее в подключаемых файлах ничего не происходит;
  • Подключённый файл имеет туже , которую имеет строка, где объявлен include. То есть если где-то по среди файла, то глобальную область видимости, а если внутри функции, то локальную. Ещё раз подчеркну, что include это тоже самое, если бы вы взяли и скопировали код в файл на место include.

Спасибо всем за внимание и отличных выходных!

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

У Вас в браузере заблокирован JavaScript. Разрешите JavaScript для работы сайта!

include()

Оператор include() подключает и вычисляет специфицированный файл.

Нижеследующая документация применима также к require() . Эти две конструкции идентичны во всём, кроме обработки облома. include() выводит Warning! , а require() выдаёт Fatal Error . Иначе говоря, используйте require() , если вы хотите, чтобы отсутствие файла останавливало процессинг страницы. include() не работает таким образом, скрипт продолжит выполнение. Не забудьте также о соответствующей установке include_path .

Когда файл подключён/included, содержащийся в нём код наследует область видимости переменной строки, на которой возникло подключение. Любые переменные, доступные на этой строке в вызывающем файле, будут доступны в вызываемом файле, вперёд от этой точки.

Пример 1. Базовый пример include()
vars.php $color = "green"; $fruit = "apple"; test.php 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-код, обязан быть заключён в правильные стартовый и конечный тэги РНР.

Поскольку include() и require() являются специальными конструкциями языка, вы обязаны заключить их в блок операторов, если это внутри условного блока.

Пример 4. include() и условные блоки
// Это НЕПРАВИЛЬНО, и не будет работать так, как ожидается. if ($condition) include $file; else include $other; // Это КОРРЕКТНО. if ($condition) { include $file; } else { include $other; }

Обработка возвращает: можно выполнить оператор return() внутри подключённого файла, чтобы прервать обработку этого файла и возвратиться в скрипт, вызвавший его. Также можно возвращать значения из подключённых файлов. Вы можете принять значение вызова include как обычно.

Примечание: в PHP 3 возвращаемое значение может не появиться внутри блока, если это не блок функции; в этом случае return() применяется к этой функции, а не ко всему файлу.

Пример 5. include() и оператор return()
return.php $var = "PHP"; return $var; noreturn.php $var = "PHP"; testreturns.php $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 [email protected].";

Другие способы чтения файлов в переменные возможны с помощью функций.

Похожие статьи