找出在PHP中调用我的函数的文件名
如何找出调用我的函数的脚本的文件名?
例如
function sthing() {
echo __FILE__; // echoes myself
echo __CALLER_FILE__; // echoes the file that called me
}
如何找出调用我的函数的脚本的文件名?
例如
function sthing() {
echo __FILE__; // echoes myself
echo __CALLER_FILE__; // echoes the file that called me
}
一种解决方案可能是使用debug_backtrace
函数:在回溯中,应该存在这种信息。
或者,正如Gordon在评论中指出的那样,如果您只想输出该信息而不使用它,也可以使用debug_print_backtrace
。
例如,包含以下内容:temp.php
<?php
include 'temp-2.php';
my_function();
并包含此:temp-2.php
<?php
function my_function() {
var_dump(debug_backtrace());
}
从我的浏览器调用会得到这个输出:temp.php
(i.e. the first script)
array
0 =>
array
'file' => string '/.../temp/temp.php' (length=46)
'line' => int 5
'function' => string 'my_function' (length=11)
'args' =>
array
empty
在那里,我有“”文件名 - 这是调用函数的文件名。temp.php
当然,你必须测试更多(特别是在函数不在“第一级”包含的文件中,而是在另一个包含的文件中的情况下 - 不确定debug_backtrace
会有多大帮助,那里...) ;但这可能有助于您获得第一个想法...
试试这个代码:
$key = array_search(__FUNCTION__, array_column(debug_backtrace(), 'function'));
var_dump(debug_backtrace()[$key]['file']);