好的,这是一个真正的简短查询。
我从函数内部调用 __FILE__
。
现在,这个函数本身在一个必需的文件中。
现在,当我从父文件内部调用此函数时,__FILE__
会输出父文件还是包含的文件?
哦,如果可能的话,我正在寻找可以确认的来源,因为我在这里的测试给出了完全荒谬的结果。
此外,如果这应该显示子(包含的)文件,我应该如何处理才能显示父文件路径? (一些变化还是什么?)
最佳答案
__FILE__
始终替换为出现该符号的文件名。
要获取调用函数的文件名,可以使用debug_backtrace()
。 .这会将当前调用堆栈作为一个数组返回,每个子数组都包含从中进行调用的文件、行和函数键。
您可以将最前面的元素移出数组以获取调用函数的位置:
a.php:
<?php
require_once('b.php');
b();
b.php:
<?php
function b() {
$bt = debug_backtrace();
var_export($bt);
}
输出:
array (
0 => array (
'file' => '/home/meagar/a.php',
'line' => 5,
'function' => 'b',
'args' => array( ),
),
)
同样的事情在没有函数调用的情况下仍然有效:
a.php:
<?php require_once('b.php');
b.php:
<?php
$bt = debug_backtrace();
var_export($bt);
输出:
array (
0 => array (
'file' => '/home/meagar/a.php',
'line' => 3,
'function' => 'require_once',
),
)
关于包含文件中 __FILE__ 的 PHP 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3954391/