Page 38 - 4636
P. 38
Функції require() і include ()майже еквівалентні. Єдина відмінність між ними полягає в
тому, що при невдалому виконанні require()генерує фатальну помилку, a include()- лише
попередження.
Є дві модифікації require()і include(),які називаються require_once() і
include_once() відповідно. З їх назв (“once” - “одного разу”) зрозуміло, що вони призначені для
одноразового включення файлу. Але з відомих прикладів застосування - верхніх і нижніх колонтитулів
- їх користь не очевидна.
Однак функції require_once() і include_once() зручні для включення бібліотек функцій. Ці
конструкції захищають від випадкового повторного включення тієї ж бібліотеки, коли перевизначення
функцій може призвести до помилки. Але при досить акуратному кодуванні краще застосовувати
require() і include(), тому що вони виконуються швидше.
Розширення імен файлів і require ()
У файлі з іменем reusable.php зберігається наступний код:
<?php
echo 'А це дуже простий РНР-оператор.<br />';
?>
А у файлі з іменем main. php міститься такий код:
<?php
echo 'Це головний файл.<br />';
require('reusable.php');
echo 'Зараз сценарій завершиться.<br />';
?>
Коли завантажується файл reusable.php, у вікні браузера відображається текст “А це дуже простий
РНР-оператор”. Однак при завантаженні файлу main.php відбувається інше. Результат цього сценарію
показаний на рис. 2.1.
Щоб можна було використовувати оператор require (), необхідний файл. У попередньому
прикладі використовувався файл reusable.php. При виконанні цього сценарію оператор
require('reusable.php'); замінюється вмістом потрібного файлу, після чого сценарій
виконується.
Це означає, що завантажений файл main.php виконується так, якби сценарій мав такий вигляд:
<?php
echo 'Це головний файл.<br />';
echo 'А це дуже простий РНР-оператор.<br />' ;
echo 'Зараз сценарій завершиться.<br />';
?>
Рисунок 2.1 - Результат, що генерується файлом main.php, відображає результат виконання
оператора require( )
При використанні оператора require() слід звернути увагу на відмінності в обробці розширень
імен файлів і РНР-дескрипторів.
35