Подключение файлов в PHP

Александр Кичатов

В 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'];

Комментарии