В PHP существует возможность подключения PHP (и не только) файлов в другие. Благодаря этому мы можем разделить большой скрипт или вёрстку сайта на несколько частей.
Функция include
Представим, что у нас в корне сайта лежат файлы index.php и config.php. И мы хотим в первый файл подключить второй. Это можно сделать так:
index.php
<?php
include 'config.php';
echo 'Главная.';
config.php
<?php
echo 'Конфиг.';
Функция include подключает содержимое скрипта config.php, как если бы код этого скрипта находился в самом index.php.
Результат запуска скрипта index.php:
Конфиг.Главная.
В данном примере мы указали относительный путь к скрипту, т.е. путь относительно вызывающего скрипта. Эту тему мы подробно разберём на уроке Абсолютные и относительные пути в PHP.
Функция require
Функция require() подключает файл точно также, как и include().
Разница в том, что при невозможности подключения файла (файл отсутствует или недостаточно прав) функция include() покажет ошибку и продолжит работу, а require() покажет ошибку и остановит выполнение скрипта.
Функции include_once и require_once
При использовании функций с приставкой _once вы запрещаете повторное подключение скрипта. При попытке повторного подключения PHP сгенерирует ошибку.
После этой ошибки include_once() продолжит работу, а require_once() остановит скрипт.
Получение данных из подключаемого скрипта
Подключаемый скрипт может передать подключающему скрипту какие-либо данные с помощью оператора return:
index.php
<?php
$config = include('config.php');
echo $config['site_name'];
config.php
<?php
return [
'site_url' => 'www.programulin.ru',
'site_name' => 'Програмулин'
];
В коде выше скрипт config.php возвращает массив, который мы в файле index.php принимаем и сохраняем в переменную $config.
Область видимости подключаемых файлов
Все переменные, функции и т.п., объявленные в подключаемом файле, будут видны в исходном. При этом переменные подключаются в текущую область видимости. Т.е. если подключить файл внутри функции, то переменные будут видны только в ней:
index.php
<?php
function get_config()
{
$config = include('config.php');
return $config;
}
// Ошибка, переменная $config видна только внутри функции get_config
echo $config['site_name'];