Підключення файлів в php include і require

Підключення файлів в php include і require

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

Архітектура програмного забезпечення (англ. Software architecture) - сукупність найважливіших рішень про організацію програмної системи. Архітектура включає:

  • вибір структурних елементів і їх інтерфейсів, за допомогою яких складена система, а також їх поведінки в рамках співпраці структурних елементів;
  • з'єднання обраних елементів структури і поведінки у все більш крупні системи;
  • архітектурний стиль, який направляє всю організацію - все елементи, їх інтерфейси, їх співпраця і їх з'єднання.

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

Сенс архітектури в тому, щоб компоненти програми, що відповідають за якийсь схожу поведінку, лежали в одному місці, і їх можна було легко знайти і змінити.

Ну а взагалі, давайте на прикладі. Але спочатку давайте вивчимо одну «магічну» константу. Мова йде про константі __DIR__. У ній міститься шлях до директорії, в якій знаходиться поточний скрипт (скрипт, в якому ця константа була використана).

Давайте запишемо в наш index.php наступний код:

Результат цього коду:

Ну а тепер повернемося до основної теми уроку. Створимо в директорії з index.php ще один файл з ім'ям functions.php і заповнимо його наступного змісту:

Тепер повернемося в index.php і запишемо в нього наступний код:

Сподіваюся, ніхто не забув, що можна вставляти PHP-код прямо всередині HTML? Про це ми говорили в цьому уроці. Тільки там ми використовували для виведення конструкцію виду:

Якщо у вставці нам потрібно тільки вивести результат певного виразу, то її можна спростити до:

І якщо зараз ми зайдемо в браузері на URL нашого застосування, то побачимо наступне:

Підключення файлів в php include і require

Наше додаток успішно відпрацювало, і основний код сторінки у нас не містить допоміжних функцій - вони за допомогою директиви include підключилися в наш файл. Якщо говорити більш детально - PHP-код з файлу functions.php був вставлений в те місце, де він був підключений за допомогою директиви include.

Різниця між require і include

Є ще одна директива для підключення файлів - require. Якщо ви зараз замініть include на require. ось так:

то нічого по суті не зміниться - код відпрацює точно так же.

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

Давайте знову повернемо директиву include. перейменуємо functions.php в abc.php і спробуємо оновити сторінку.

Підключення файлів в php include і require

Отримали помилки різних типів. Перша з них - warning. який повідомляє про те, що файл functions.php не найден. Але скрипт продовжив своє виконання, а потім впав на рядку 10 через те, що не було знайдено функція isEven (). а це вже fatal error.
Давайте тепер замінимо include на require і знову відновимо сторінку.

Підключення файлів в php include і require

Тепер ми отримали fatal error відразу на другому рядку, додаток завершило свою роботу на цьому місці.

Тобто require потрібно використовувати там, де підключення файлу обов'язково. Наприклад, файл з конфігурацією, або необхідними функціями.

Як ще можна використовувати require і include

Крім того, що можна підключати файли з PHP-кодом, можна також підключати файли, що містять якийсь текст, або зокрема HTML-код.

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

Підключення файлів в php include і require

Зеленим кольором я виділив ту частину сторінки, яка буде змінюватися.

Давайте для початку зверстаємо наш шаблон. Сподіваюся, все пройшли курс по HTML. У мене вийшов ось такий код:

Ось така вийшла у мене веб-сторінка:

Давайте тепер розіб'ємо цей код на компоненти. Створимо 4 файлу: header.php з шапкою файлу, sidebar.php з бічної колонкою, content.php з основним вмістом сторінки і footer.php для підвалу сайту.

А тепер повернемося в index.php і запишемо в нього наступний код:

Оновимо сторінку і побачимо, що вона як і раніше працює. Тільки тепер вона зібралася з маленьких шматочків, кожен з яких відповідає за свою частину.

У підключаються файлах ми можемо використовувати змінні, які були визначені до їх підключення. Наприклад, давайте в index.php додамо змінну $ content:

А в файлі content.php виведемо цю змінну:

Давайте тепер знову відновимо сторінку:

Підключення файлів в php include і require

Та да! Наша сторінка сформувалася динамічно! Мало того, що вона була зібрана з різних компонентів, так вона ще й виводить значення з змінних.

Директиви require_once і include_once

Іноді потрібно, щоб файл підключився тільки один раз. Наприклад, щоб тільки один раз підключити файл з функціями. Для цього використовуються директиви require_once і include_once.

Давайте створимо файл config.php і запишемо в нього наступне вміст:

І тепер створимо файл test.php і напишемо наступний код:

І побачимо, що текст вивівся тільки один раз.

Підключення файлів в php include і require

Тепер давайте замінимо include_once на include:

А ось тепер код підключився кілька разів:

Ось такі пиріжки. Трохи пізніше ми ще повернемося до цієї теми цих відмінностей, і коли саме варто використовувати include_once і require_once.

А поки що на цьому все. Робіть домашнє завдання і до зустрічі на наступних уроках!