Как определить, был ли файл уже необходим?
Я создал глобальный файл php(globs.php), и потребовал этого на всех моих страницах. Однако некоторые страницы теперь включают другие страницы, и я получаю сообщение об ошибке, когда он пытается потребовать globs.php еще раз.
Как я могу определить, требуется ли файл? Таким образом, я мог бы сделать, если бы!требовалось ('globs.php ') требовать ('globs.php ").
5 answers
Вы также можете создать свою собственную функцию require_file:
<?php function require_file($file_path){ static $required_files=array(); if(!isset($required_files[$file_path])){ require $file_path; $required_files[$file_path]=true; return true; } return false; } ?>
Вместо этого используйте require_once:
Оператор _require_once_ идентичен require, за исключением того, что PHP проверит, был ли файл уже включен, и если да, то не будет включать (требовать) его снова...
массив get_included_files
( пустота )
Http://www.php.net/manual/en/function.get-included-files.php
Возвращает имена всех файлов, которые были включены с помощью включить, включение_онсе, требовать или требовать_онсе
Возвращаемые значения
Возвращает массив имен всех файлов.
Первоначально вызванный сценарий считается "включенным файлом", поэтому он будет быть перечислены вместе с файлами, на которые ссылаются include и family.
Файлы, которые включены или требуются несколько раз, отображаются в возвращаемом массиве только один раз.
get_included_files()
пример
<?php
// This file is abc.php
include 'test1.php';
include_once 'test2.php';
require 'test3.php';
require_once 'test4.php';
$included_files = get_included_files();
foreach ($included_files as $filename) {
echo "$filename\n";
}
?>
Приведенный выше пример выведет:
abc.php
test1.php
test2.php
test3.php
test4.php
Лучшим решением является require_once(), который использует тот же синтаксис, что и require(), но выполняет проверку, о которой вы говорите, автоматически.
Если вам действительно нужно знать, требовалось ли это уже, я предлагаю определить константу в вашем включенном файле и проверить ее значение.
Предполагая, что в файле, который вы хотите включить, определена функция, вы также можете выполнить быстрый
if (!function_exists('foo')) {
require('bar.php');
}
Используйте то, что лучше всего подходит для вашей настройки.