Php include файл. Подключение в PHP сторонних файлов

У Вас в браузере заблокирован 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].";

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

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

Доброго времени суток всем читателям блога 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 сторонних файлов я и расскажу в этой статье.

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

Архитектура программного обеспечения (англ. software architecture) - совокупность важнейших решений об организации программной системы. Архитектура включает:

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

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

Смысл архитектуры в том, чтобы компоненты программы, отвечающие за какое-то похожее поведение, лежали в одном месте, и их можно было легко найти и изменить.

Ну а вообще, давайте на примере. Но сначала давайте изучим одну «магическую» константу. Речь идёт о константе __DIR__ . В ней содержится путь до директории, в которой находится текущий скрипт (скрипт, в котором эта константа была использована).

Давайте запишем в наш index.php следующий код:

Результат этого кода:

C:\OpenServer\domains\myproject.loc\www

Вуаля, мы теперь знаем, в какой папке находится index.php . Мы будем всегда использовать магическую константу __DIR__ при указании путей подключаемых файлов. При этом в выражениях для подключения файлов следует избегать данных от пользователей, чтобы избежать хакерских атак под названием PHP-injections. Подробнее читайте .

Ну а теперь вернёмся к основной теме урока. Создадим в директории с index.php ещё один файл с именем functions.php и заполним его следующим содержимым:

Теперь вернёмся в index.php и запишем в него следующий код:

Чётные и нечётные числа Число 2
Число 5
Число 8

Надеюсь, никто не забыл, что можно вставлять PHP-код прямо внутри HTML? Об этом мы говорили в . Только там мы использовали для вывода конструкцию вида:

Если во вставке нам нужно только вывести результат какого-то выражения, то её можно упростить до:

И если сейчас мы зайдём в браузере на URL нашего приложения, то увидим следующее:

Наше приложение успешно отработало, и основной код страницы у нас не содержит вспомогательных функций – они с помощью директивы include подключились в наш файл. Если говорить более детально – PHP-код из файла functions.php был вставлен в то место, где он был подключен с помощью директивы include .

Разница между require и include

Есть ещё одна директива для подключения файлов – require . Если вы сейчас замените include на require , вот так:

Require __DIR__ . "/functions.php";

то ничего по сути не изменится – код отработает точно так же.

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

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

Зелёным цветом я выделил ту часть странички, которая будет изменяться.

Давайте для начала сверстаем наш шаблон. Надеюсь, все прошли . У меня получился вот такой код:

Заголовок страницы

HEADER
CONTENT
FOOTER

Вот такая получилась у меня веб-страничка:

Давайте теперь разобьём этот код на компоненты. Создадим 4 файла: header.php с шапкой файла, sidebar.php с боковой колонкой, content.php с основным содержимым страницы и footer.php для подвала сайта.

Заголовок страницы

HEADER
CONTENT
FOOTER

А теперь вернёмся в index.php и запишем в него следующий код:

Обновим страничку и увидим, что она по-прежнему работает. Только теперь она собралась из маленьких кусочков, каждый из которых отвечает за свою часть.

В подключаемых файлах мы можем использовать переменные, которые были определены до их подключения. К примеру, давайте в index.php добавим переменную $content:

Заголовок статьи

Текст какой-то статьи

"; require __DIR__ . "/header.php"; require __DIR__ . "/sidebar.php"; require __DIR__ . "/content.php"; require __DIR__ . "/footer.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.

А пока что на этом всё. Делайте домашнее задание и до встречи на следующих уроках!

 
Статьи по теме:
Как скопировать веб-страницу если там установлена защита от копирования
В нашем законодательстве существует понятие добропорядочности граждан, то есть предполагается, что человек не виноват, пока никто не доказал обратное. С другой стороны незнание закона не освобождает от ответственности за его нарушение. Поскольку уровень п
Как правильно выполнить сброс настроек
Cодержание: Зачем нужна эта функцияПричин воспользоваться данной функцией может быть множество. Нередко пользователи сталкиваются с проблемой ограничения памяти.SD-карта всегда имеет свой предел, а встроенная в телефон память, как правило, может вместить
Подключение и запуск Telnet
Обсуждение подопций Некоторые опции требуют большего количества информации, нежели просто "включить" (enable) или "выключить" (disable). Например, установка типа терминала: для того чтобы клиент мог идентифицировать тип терминала, он должен отправить AS
Что такое Проектор LED или светодиодный проектор?
DLP- и LCD-проекторы отличаются технологией создания изображения. В свет лампы с помощью призмы разбивается на лучи основных цветов: зеленый, синий и красный, а потом попадает на одну из трех маленьких жидкокристаллических матриц. ЖК-матрицы пропускают св