Функция require_once() заменяет себя указанным файлом, подобно
процессору C
#include, и в этом отношении схожа с функцией require(). Главное отличие состоит в том, что в
цепочке подключения использование
require_once()будет гарантировать, что код будет
добавлен в ваш скрипт только однажды.
Например, если вы создаете два следующих
файла:
utils.inc и foolib.inc
Пример 11-3. utils.inc
<?php
define("PHPVERSION", floor(phpversion()));
echo "GLOBALS ARE NICE\n";
function goodTea()
{
return "Oolong tea tastes good!";
}
?>
Пример 11-4. foolib.inc
<?php
require ("utils.inc");
function showVar($var)
{
if (PHPVERSION == 4) {
print_r($var);
} else {
var_dump($var);
}
}
// связка других функций ...
?>
Затем вы пишите скрипт cause_error_require.php
Пример 11-5. cause_error_require.php
<?php
require("foolib.inc");
/* the following will generate an error */
require("utils.inc");
$foo = array("1",array("complex","quaternion"));
echo "this is requiring utils.inc again which is also\n";
echo "required in foolib.inc\n";
echo "Running goodTea: ".goodTea()."\n";
echo "Printing foo: \n";
showVar($foo);
?>
Когда вы попытаетесь выполнить последний
пример, конечный вывод будет (используя PHP 4.01pl2):
GLOBALS ARE NICE
GLOBALS ARE NICE
Fatal error: Cannot redeclare goodTea() in utils.inc on line 5
Модифицировав foolib.inc и cause_errror_require.php, используя require_once()
вместо require() и переименовав последнее в avoid_error_require_once.php, мы имеем:
Пример 11-6. foolib.inc (fixed)
...
require_once("utils.inc");
function showVar($var)
{
...
Теперь мы будем иметь следующее (используя PHP 4.0.1pl2):
GLOBALS ARE NICE
this is requiring globals.inc again which is also
required in foolib.inc
Running goodTea: Oolong tea tastes good!
Printing foo:
Array
(
[0] => 1
[1] => Array
(
[0] => complex
[1] => quaternion
)
)
Смотрите также: require(), include(), include_once(), get_required_files(), get_included_files(), readfile(), и virtual().