Подключение файла в PHP. Как расширить функционал внешним скриптом?

подключение файла в php. как расширить
    функционал внешним скриптом?

Разделение логики на модули

Реальные программы в значительной степени отличаются от примеров, приводимых в данном учебном курсе. Они реализуют более сложную логику, а их исходный код может достигать очень больших объемов. Все определения функций, объявления переменных и бесчисленное использование выражений невозможно объединить в одном огромном файле. Вы будете тратить много времени и усилий для его редактирования.

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

Подключение файла через include

В PHP существует специальная языковая конструкция include, которая позволяет подключать внешние файлы со скриптами. Использовать её предельно просто. В месте, где необходимо осуществить подключение, напишите следующее выражение «include "путь_до_файла";». Путь может быть указан относительно того скрипта, в котором происходит операция, либо относительно корня файловой системы.

Допустим, у вас есть два файла, лежащие в корневой директории проекта. Они имеют имена first-script.php и second-script.php. Файл first-script.php объявляет внутри себя функцию, как показано в примере ниже.

//Содержимое файла first-script.php
function showHelloMessage($name) {
    echo "Добро пожаловать, $name!";
}

Функция только объявляется, но никаким образом не используется. Теперь мы осуществим подключение этого файла с помощью include внутри second-script.php и вызовем функцию на выполнение.

//Содержимое файла second-script.php
include "first-script.php";
showHelloMessage('Дмитрий');
/*
* Результат:
* Добро пожаловать, Дмитрий!
*/

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

Требование файла через require

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

Обычно, если осуществляется включение внешнего файла, его функционал необходим для дальнейшей работы программы. В PHP существует специальная языковая конструкция require, которая выполняет то же самое что и include, но останавливает выполнение программы в случае отсутствия внешнего файла.

/*
* Файла не существует. Так как подключение происходит через
* include, то строка, идущая сразу за подключением, будет
* выведена в браузер.
*/
include "non-exist-file.php";
echo 'Файл не подключен, но программа работает дальше!';


/*
* Файла не существует. require не позволит повторно вывести
* сообщение на экран, выбросив фатальную ошибку.
*/
require "non-exist-file.php";
echo 'Файл не подключен, но программа работает дальше!';

Циклические подключения

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

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

//содержимое файла first-script.php
echo 'Файл first-script.php подключен!';


//содержимое файла second-script.php
/*
* Цикл будет выполнен 100 раз, для имитации многократных
* подключений. Первый файл пишет строку в браузер. При
* использовании require_once это произойдет всего один раз.
*/
for($count = 0; $count != 100; $count++) {
    require_once "first-script.php";
}

Последние публикации