Здатність викликати сценарій з окремого файлу за його ім'ям називається в PHP підключенням файлів. Підключають PHP-сценарії, будь-які текстові файли або HTML-сторінки.
PHP-розробники дроблять вихідний код проекту на окремі сценарії, щоб було простіше працювати. Якщо написати код в одному файлі, сценарій стане неосяжним, і орієнтуватися буде неможливо.
Якщо винести блоки коду, що повторюються, в окремі сценарії, то з'явиться можливість повторно використовувати один код у різних файлах і підключати його тільки на вимогу.
Наприклад, користувацькі функції зручно оголошувати в окремому сценарії, а потім підключати там, де ці функції знадобилися.
Для підключення файлів у PHP є дві мовні конструкції: require і require_once. Відмінності між ними мінімальні. Обидва цих ключових слова підключають файл із зазначеним ім'ям і викликають помилку, якщо цей файл не існує.
👉 Особливість роботи require_once - він дає змогу під'єднувати файл тільки один раз, навіть якщо викликати інструкцію кілька разів з одним іменем файлу.
Розглянемо, як підключити один сценарій всередині іншого. Для цього скористаємося інструкцією require. Припустимо, у нас є два сценарії: index.php і sub.php.
Вміст файлу sub.php:
<?php
print("Привіт, я вміст із sub.php!" . PHP_EOL);
?>
У файлі index.php знаходиться код, який підключить сценарій sub.php:
<?php
require 'sub.php';
print("А я - index.php!" . PHP_EOL);
?>
Цікавий факт: require можна використовувати як ключове слово, або як функцію.
Результат буде одним і тим самим:
<?php
require('sub.php'); // використання як функції
print("А я - index.php!" . PHP_EOL);
?>
Результат роботи:
Привіт, я вміст із sub.php!
А я - index.php!
Що сталося? Два сценарії ніби склеїлися в один: виконався весь вміст sub.php і додався на початок сценарію index.php.
Під час під'єднання файлу як його адресу вказують абсолютний або відносний шлях.
Абсолютний шлях - це повна адреса файлу від кореня диска. Наприклад, /var/www/web/site/inc/sub.php.
Відносний шлях містить адресу щодо поточної робочої директорії. Якщо сценарій лежить у папці /var/www/web/site, то для підключення файлу використовується такий шлях: inc/sub.php.
Рекомендується завжди вказувати відносні шляхи, щоб сайт продовжував працювати, якщо його перемістять в іншу папку.
👉 У PHP є корисні вбудовані константи, їх використовують у шляхах до файлів, що підключаються.
__DIR__ - повний шлях до директорії з поточним сценарієм.
__FILE__ - повний шлях до поточного сценарію.
Під час під'єднання файли склеюються в один, тому і всі змінні в різних сценаріях теж отримують загальну область видимості.
У PHP немає системи модулів, як в інших мовах програмування (Python, Java, ECMAScript 12). Неможливо "імпортувати" окремі змінні або функції зі сценарію, що підключається.
Якщо підключити один сценарій двічі, то змінні та функції з нього теж оголосять повторно, а це викличе помилку. Щоб такого не сталося, використовуйте require_once.