如何判断文件是否已被要求?

时间:2011-07-25 22:58:25

标签: php require

我已经创建了一个php全局文件(globs.php),并且在我的所有页面中都需要它。 但是,有些页面现在包含其他页面,并且在尝试再次要求globs.php时出现错误。

如何判断是否需要文件?这样,如果!required('globs.php')require('globs.php'),我可以这样做。

5 个答案:

答案 0 :(得分:25)

改为使用require_once

  

_require_once_语句与require相同,但PHP会检查文件是否已被包含,如果是,则不再包括(要求)...

答案 1 :(得分:15)

array get_included_files ( void )

http://www.php.net/manual/en/function.get-included-files.php

获取使用includeinclude_oncerequirerequire_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;
}
?>