PHP:如何检查给定文件是否已包含在函数中()
PHP: how to check if a given file has been included() inside a function
我有一个 PHP 文件,可以在另一页内的不同位置使用 include'd()。我想知道它是否已包含在函数中。我怎样才能做到这一点?谢谢
您可以在包含的文件中设置一个变量并在您的函数中检查该变量:
include.php:
$included = true;
anotherfile.php:
function whatever() {
global $included;
if (isset($included)) {
// It has been included.
}
}
whatever();
有一个名为 debug_backtrace()
的函数,它将 return 当前调用堆栈作为一个数组。这感觉像是一个有点丑陋的解决方案,但它可能适用于大多数情况:
$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;
}
}
您可以检查文件是否在 get_included_files() 返回的数组中。 (请注意,列表元素是完整路径名。)要查看包含是否发生在特定函数调用期间,请检查函数调用前后的 get_included_files。
我有一个 PHP 文件,可以在另一页内的不同位置使用 include'd()。我想知道它是否已包含在函数中。我怎样才能做到这一点?谢谢
您可以在包含的文件中设置一个变量并在您的函数中检查该变量:
include.php:
$included = true;
anotherfile.php:
function whatever() {
global $included;
if (isset($included)) {
// It has been included.
}
}
whatever();
有一个名为 debug_backtrace()
的函数,它将 return 当前调用堆栈作为一个数组。这感觉像是一个有点丑陋的解决方案,但它可能适用于大多数情况:
$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;
}
}
您可以检查文件是否在 get_included_files() 返回的数组中。 (请注意,列表元素是完整路径名。)要查看包含是否发生在特定函数调用期间,请检查函数调用前后的 get_included_files。