Функція PHP include – розширюємо можливості свого ресурсу

126

Від автора: багато «чайники», вперше занурившись «з вухами» в вивчення веб-програмування, наївно тішать себе надією, що будь-який ресурс поміститься на одній сторінці. Але це не так: сучасний сайт складається з десятків сторінок, пов’язаних між собою. Всі файли проекту можна порівняти з вагонами поїзда. При необхідності можна прибрати зайвий, а при нестачі – подовжити «програмний» склад ще на один. Для «зчеплення» файлів використовується функція PHP include.

Навіщо потрібен причіп?

Ну, щоб можна було більше завантажити і перевезти. За таким же принципом діють і в PHP: якщо потрібно «навантажити» на свій сайт контенту або функціоналу, то доведеться «чіплялися» ще один вагон (точніше, файл), і в ньому розміщувати додатковий вантаж. При цьому в якості причіпного пристрою виступає функція include().

З її допомогою можна легко змінювати структуру веб-проекту шляхом заміни одного файлу на інший. На такому принципі базується все сучасне сайтостроение. Кожна складова частина ресурсу або веб-сторінка розміщується в окремому файлі. Це також значно знижує загальну вагу всього програмного коду. Не зовсім зрозуміло? Тоді давайте розберемося на практичному прикладі. Повторюйте за мною:

Створіть 3 файли з розширеннями .php. Назвіть їх header, footer, content і додайте в одній папці на серверному просторі.

Створіть ще один файл PHP і назвіть його index.

У кожен з перших трьох файлів вставити відповідні (їх назви) рядка коду:

“;
echo “content
“;
echo “footer
“;
?>

На даному етапі у вас повинно бути 4 файлу:

Функція PHP include – розширюємо можливості свого ресурсу

В index.php помістіть наступний код:

Відкрийте index.php у браузері. Ось що ви повинні побачити:

Функція PHP include – розширюємо можливості свого ресурсу

Ось так за допомогою include «збираються» справжні сайти. Такі ресурси на відміну від звичайних (HTML) генеруються «на льоту» й називаються динамічними. Функція include забезпечує взаємозв’язок усіх частин дизайну і функціоналу в динамічних сайтах.

Кожен з файлів нашого демонстраційного проекту можна легко замінити на інший або підключити його на будь-який веб-сторінці ресурсу за допомогою даної функції.

Причіп причепу ворожнечу

У PHP існує ще одна конструкція для підключення файлів – require. Але навіщо такому вельмишановному мови, як PHP дві однакові функції з різними назвами і однаковим результатом виконання? Ось декілька відмінностей між include і require:

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

З-за вище описаною особливості require більше підходить для зв’язування файлів динамічно створюваних ресурсів, а include – для підключення сторонніх бібліотек.

Include дозволяє підключати не тільки локальні, але і віддалені файли проекту. Завдяки чому ця функція найчастіше використовується в хмарних технологіях.

При виникненні збою в коді require повністю зупинить виконання програми і видасть повідомлення про помилку. При використанні функції include програмний код продовжує виконуватися, а PHP виведе тільки попередження.

Останній «постулат» я поясню на прикладі використання include всередині користувальницької функції PHP. Для цього трохи перетворимо код index.php:

Ми створили власну функцію generate(), і в її тілі розмістили код для підключення всіх файлів проекту. До того ж приєднали файл, якого не існує в природі» (zero.php). Запустіть код на виконання. В результаті ви отримаєте попередження, що zero.php ні, а виконання коду продовжиться:

Функція PHP include – розширюємо можливості свого ресурсу

Тепер використовуємо require:

Функція PHP include – розширюємо можливості свого ресурсу

В результаті ми отримали повідомлення про помилку і не до кінця виконану програму. Виходить, що обидві функції приєднують «причепи» по-різному. І це особливість слід враховувати! А на сьогодні все. Зустрінемося в наступному матеріалі даного циклу, присвяченого вивченню PHP.