我已经创建了一个php全局文件(globs.php),并且在我的所有页面中都需要它。 但是,有些页面现在包含其他页面,并且在尝试再次要求globs.php时出现错误。
如何判断是否需要文件?这样,如果!required('globs.php')require('globs.php'),我可以这样做。
答案 0 :(得分:25)
改为使用require_once:
_require_once_语句与require相同,但PHP会检查文件是否已被包含,如果是,则不再包括(要求)...
答案 1 :(得分:15)
get_included_files
( void ) http://www.php.net/manual/en/function.get-included-files.php
获取使用include,include_once,require或require_once
列出的所有文件的名称返回所有文件名称的数组。
最初调用的脚本被视为“包含文件”,因此将列出 以及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
答案 2 :(得分:4)
最佳解决方案是require_once(),它使用与require()相同的语法,但执行您自动讨论的检查。
如果你真的需要知道它是否已被要求,我建议在你所包含的文件中定义一个常量并检查它的值。
答案 3 :(得分:2)
假设您想要包含的文件中定义了一个函数,您也可以快速执行
if (!function_exists('foo')) {
require('bar.php');
}
使用最适合您设置的内容。
答案 4 :(得分:-3)
您也可以创建自己的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; } ?>