包含文件内 __FILE__ 的 PHP 输出

Sto*_*oic 6 php constants

好的,这是一个真正的简短查询。__FILE__我从函数内部调用。现在,这个函数本身位于所需的文件中。

现在,当我从父文件内部调用此函数时,输出是__FILE__父文件还是包含的文件?

哦,如果可能的话,我正在寻找可以确认的来源,因为我在这里的测试给出了完全荒谬的结果。

另外,如果这应该显示子(包含)文件,我应该如何处理才能显示父文件路径?(一些变化或者什么?)

mea*_*gar 4

__FILE__始终替换为出现该符号的文件名。

要获取调用函数的文件的名称,可以使用debug_backtrace(). 这将当前调用堆栈作为数组返回,每个子数组包含进行调用的文件、行和函数键。

您可以将最前面的元素移出数组以获取调用函数的位置:

a.php:

<?php

require_once('b.php');

b();
Run Code Online (Sandbox Code Playgroud)

b.php:

<?php

function b() {
   $bt = debug_backtrace();
   var_export($bt); 
}
Run Code Online (Sandbox Code Playgroud)

输出:

array (
  0 => array (
    'file'     => '/home/meagar/a.php',
    'line'     => 5,
    'function' => 'b',
    'args'     => array( ),
  ),
)
Run Code Online (Sandbox Code Playgroud)

没有函数调用也可以实现同样的效果:

a.php:

<?php require_once('b.php');
Run Code Online (Sandbox Code Playgroud)

b.php:

<?php
$bt = debug_backtrace();
var_export($bt);
Run Code Online (Sandbox Code Playgroud)

输出:

array (
  0 => array (
    'file'     => '/home/meagar/a.php',
    'line'     => 3,
    'function' => 'require_once',
  ),
)
Run Code Online (Sandbox Code Playgroud)