Що правильніше використовувати - require або include

Що правильніше використовувати - require або include

Як ви знаєте, в PHP є 4 функції для підключення інших файлів. Це include. include_once. require і require_once. Чим же вони відрізняються і як правильно їх використовувати?

Для початку розберемо різницю між include і require. Ці дві функції розрізняються лише реакцією на відсутність підключається файлу. Функція include ( «включити») при відсутності зазначеного файлу видасть повідомлення про помилку типу E_WARNING, але виконання програми продовжиться. На відміну від неї, require ( «вимагати») при відсутності підключається файлу видає фатальну помилку (E_ERROR), яка призводить до негайної зупинки виконуваного скрипта.

Таким чином, на підставі знань про те, як виконується ваш код, ви можете використовувати той чи інший оператор. Наприклад, якщо це просто шматок HTML, який в цілому не впливає на хід роботи програми, або це якісь другорядні модулі, без яких інша програма може нормально функціонувати, то сміливо використовуйте include. В інших же випадках я рекомендую використовувати require. Це запобіжить можливість некоректного виконання коду і в разі помилки (наприклад, підключається файл знаходиться на відстані вірусом або загубився в процесі розробки) буде просто завершувати скрипт. В одній з майбутніх статей я покажу вам як відстежувати абсолютно всі нестандартні ситуації в коді і бути в курсі того, що відбувається всередині сайту.

Тепер розглянемо конструкції include_once і require_once. Від простих include і require вони відрізняються закінченням «_once», яке запобігає повторне підключення тих же самих файлів.

Скажімо, якщо в вашому файлі, що підключається є описи класів або функцій, то такий файл підключати повторно не можна, оскільки він буде виконаний заново і PHP видасть фатальну помилку при спробі визначити класи або функції з уже існуючими іменами. Немає сумнівів, що можна побудувати код таким чином, щоб повторне підключення ніколи не відбувалося, але це зайві обмеження і зайва робота. Тому функції з суфіксом «_once» корисні і потрібні.

У своїй практиці я використовую два види файлів. Перший вид - це файли, що містять один або кілька класів і не містять коду, що виконується «безпосередньо». Такі файли завжди підключаю за допомогою require_once. Другий вид - це шаблони або шматки шаблонів, що містять HTML і трохи PHP-коду. Такі файли підключаю за допомогою require. оскільки іноді один і той же шматок шаблону може бути використаний на сторінці кілька разів.

Я ніколи не використовую include і include_once. оскільки вважаю відсутність файлу, який повинен бути, критичною ситуацією, що вимагає негайного вирішення без будь-яких компромісів. А якщо мені потрібно підключати файл, наявність якого під сумнівом, то я просто попередньо перевіряю його наявність за допомогою is_file ().

Існує ще одна фішка при використанні include. Незважаючи на те, що насправді це не функція, а мовна конструкція, всередині підключається файлу працює оператор return. І, отже, include повертає це значення викликається коду. Це виглядає ось так

$ Ret = include 'file.php';

На сьогодні це все, програмуйте правильно!