Include подключение. Подключение внешних файлов. Директивы require_once и include_once

  • 03.11.2019

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

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

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

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

Подключение JS-скриптов (файлы с расширением *.js) к сайту

JavaScript помогает нам во многих моментах повысить функциональность сайта. Будь то стилизация форм или, например, какая-нибудь техническая сторона вопроса.

Подключение JavaScript"а осуществляется двумя способами:

1. Первый – это непосредственно вставка кода в ваш сайт с помощью тегов:

Код

2. Второй – с помощью файла:

Где «https://www.pandoge.com/main.js » – путь до файла скрипта. Такой вариант рекомендуется писать для файлов на удаленном (внешнем) сервере. Если же файл находится на вашем сайте, то можно просто указать относительный путь:

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

Что касается места подключения, то все скрипты рекомендуется подключать в секции HEAD , перед закрывающим ее тегом. Например:

Все для начинающего веб-мастера

Их также можно подключить в секции BODY . Например, все библиотеки рекомендуется подключать в секции HEAD , тогда как все счетчики, слайдеры, галереи и прочие скрипты – в секции BODY , также перед закрывающим тегом.

Подключение PHP-скриптов (файлы с расширением *.php) к сайту

Подключение PHP-скриптов осуществляется уже тремя способами:

1. Первый – это та же вставка кода в саму страницу сайта (обратите внимание, что если вы имеете страницу с расширением *.html – вам необходимо сменить расширение на *.php ) с помощью тегов:

2. С помощью файла (в таком случае подключение можно осуществлять и на странице с *.html расширением):

Но для работы этого способа в файл .htaccess , который находится в корне вашего сайта, в самый верх, необходимо добавить эти строки:

RemoveHandler .html .htm AddType application/x-httpd-php .php .htm .html .phtml

Если такого файла нет на хостинге - создайте его через любой текстовый редактор.

3. Третье – с помощью JS-скрипта. В этом случае вы также можете получить результат выполненного PHP-скрипта на сервере.

Реализация будет следующая:

$(document).ready(function() { $(".result").load("/main.php"); });

Где «.result » – это класс, куда будут грузиться данные, а «/main.php », соответственно, адрес до PHP-скрипта.

Если вы грузите данные с другого сервера, то поддержка PHP на вашем сервере не обязательна. Не забывайте подключить к вашему сайту библиотеку jQuery.

Здесь правила абсолютно те же: полный адрес к файлу, если он находится на внешнем сервере, относительный – если на вашем.

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

Если вы осуществляете подключение скриптов первый раз – попробуйте подключить скрипты из архива, который прикреплен в конце статьи. Если в обоих случаях вы получили сообщение «Hello World! » – значит, вы все сделали правильно.

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

Для чего нужно использовать в файлах 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 . Удачи!

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

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

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

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

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