Оглавление

18.3. Операторы require и include.

Если  функции  вынесены в отдельный файл, то подключить его позволяют два оператора require и include. Операторы имеют следующий формат:
require(<Имя файла>);
require <Имя файла>;
include(<Имя файла>);
include <Имя файла>;
Вынесем  функцию  f_Sum()  в  отдельный  файл (листинг 17)  и  подключим его с помощью оператора require (листинг 16).

 

Листинг 16. Использование оператора require


<?php
require("script.inc");
$var1 = 5;
$var2 = f_Sum($var1);
echo $var2;
?>

 

Листинг 17. Содержимое файла script.inc


<?php
function f_Sum($x, $y=2) {
   return ($x + $y);
}
?>


Создать  файл script.inc  можно,  например,  с  помощью Notepad++.  Следует отметить,  что  подключаемый  файл  может  иметь  любое  расширение,  хотя общепринято давать подключаемым файлам расширение inc (от "include").
Попробуем открыть файл script.inc с помощью Web-браузера. В итоге в окне Web-браузера отобразится исходный код:

<?php
function f_Sum($x, $y=2) {
   return ($x + $y);
}
?>


По этой причине необходимо размещать включаемые файлы в каталоге, доступном только для сценария, но недоступном через Интернет. При установке и настройке PHP мы указали местонахождение включаемых файлов в директиве include_path файла php.ini:

include_path = ".;C:\php5\includes"


Здесь через точку с запятой указано два места для поиска включаемых файлов:
□ . (точка) — в той же папке, что и исполняемый файл;
  C:\php5\includes — в папке includes (c:\php5\includes).
Иными словами, не найдя включаемого файла в той же папке, что и исполняемый файл, интерпретатор произведет поиск в папке includes (c:\php5\includes).
Можно также сохранять включаемый файл с расширением php. В этом случае исходный код не будет отображаться в окне Web-браузера.

Если  включаемый  файл  содержит  исполняемый  код,  то  указывать PHP-дескрипторы нужно обязательно. Иначе PHP-код будет выведен как обычный текст, а при вызове определенных в нем функций отобразится сообщение об ошибке:
function f_Sum($x, $y=2) { return ($x + $y); } 
Fatal error: Call to undefined function f_Sum() in 
C:\Apache2\htdocs\index.php on line 9
Иными словами, во включаемом файле может и не быть кода PHP. Для примера  вынесем  верхний  колонтитул  и  функцию  f_Sum()  в  файл header.inc  (листинг 19),  а  нижний  колонтитул  в файл footer.inc (листинг 20).  Затем подключим эти файлы к основному сценарию (листинг 18).

 
Листинг 18. Размещение HTML-кода во включаемом файле

<?php
require("header.inc");
$var1 = 5;
$var2 = f_Sum($var1);
echo $var2;
require("footer.inc");
?>

 

Листинг 19. Содержимое файла header.inc

<html>
<head>
<title>Функции</title>
</head>
<body>
<?php
function f_Sum($x, $y=2) {
   return ($x + $y);
}
?>

 

Листинг 20. Содержимое файла footer.inc

</body>
</html>

 
В листинге 21 приведен исходный HTML-код после выполнения предыдущей программы.


Листинг 21. Исходный HTML-код

<html>
<head>
<title>Функции</title>
</head>
<body>
7</body>
</html>

 

Таким образом можно сформировать шаблоны для множества страниц. Интерпретатор, встретив оператор require, сделает содержимое включаемого файла частью страницы. Если файл не может быть загружен, то оператор генерирует неисправимую ошибку и сценарий прекращает работу.
Вместо оператора require можно использовать оператор include. Если включаемый файл не найден, оператор выведет сообщение об ошибке, но  сценарий  будет  выполняться  далее.  Если  этот  файл  содержит  функции,  то каждый вызов функции из этого файла также будет генерировать ошибку.

 
Оператор  include  возвращает  true,  если  файл  загружен,  и  false  в  случае ошибки.  Подавить  сообщение  об  ошибке  можно  с  помощью  оператора  @ (листинг 22).

 
Листинг 22. Подавление сообщения об ошибке

<?php
if (@include("header.inc")){
   $var1=5;
   $var2 = f_Sum($var1);
   echo $var2;
}
require("footer.inc");
?>

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити