PHP:如何检查函数中是否包含给定文件()

时间:2015-03-08 13:51:26

标签: php php-include

我有一个PHP文件,可以在另一个页面内的不同位置包含()。我想知道它是否包含在函数中。我怎样才能做到这一点?感谢。

3 个答案:

答案 0 :(得分:3)

有一个名为debug_backtrace()的函数会将当前调用堆栈作为数组返回。这感觉有点难看,但它可能适用于大多数情况:

$allowedFunctions = array('include', 'include_once', 'require', 'require_once');
foreach (debug_backtrace() as $call) {
    // ignore calls to include/require
    if (isset($call['function']) && !in_array($call['function'], $allowedFunctions)) {
        echo 'File has not been included in the top scope.';
        exit;
    }
}

答案 1 :(得分:1)

您可以在包含的文件中设置变量,并在函数中检查该变量:

include.php:

$included = true;

anotherfile.php:

function whatever() {
    global $included;

    if (isset($included)) {
        // It has been included.
    }
}

whatever();

答案 2 :(得分:1)

您可以检查文件是否在get_included_files()返回的数组中。 (请注意,列表元素是完整的路径名。)要查看特定函数调用期间是否包含,请在函数调用之前和之后检查get_included_files。