php在调用脚本的上下文中打印所有文件名

时间:2016-10-11 01:23:09

标签: php

民间, 我试图回应一个在最终脚本的上下文中递归调用的所有文件的字符串 例如

  • index.php包含c.php
  • c.php包括b.php
  • b.php包含a.php
  • a.php打印出" index.php_c.php_b.php_a.php"

我能够收集父文件和当前文件,但是没有捕获所有中间文件,除非我将名称存储在局部变量中并将其传递到最终目标。

有没有办法捕捉这种背景?

类似于以下内容

// a.php
<?php
function callme()
{
$localfile = basename(__FILE__);
$parentfile = basename($_SERVER['SCRIPT_FILENAME']);
//$self = basename($_SERVER['PHP_SELF']);
//echo $self;
//echo $b.$callfile;
echo $parentfile."_".$localfile;
}
?>

//b.php
<?php
include('a.php');
callme();
?>

// c.php
<?php
include('b.php');
?>

// index.php
<?php
include('c.php');
?>

1 个答案:

答案 0 :(得分:1)

您可以使用get_included_files功能。它将为您提供一个数组,其中包含到目前为止包含的文件的名称。

// a.php:
<?php
include('b.php');
var_dump(get_included_files());

==========

//b.php:
<?php
include('c.php');

==========

//c.php:
<?php
// do nothing

输出将是:

array (size=3)
    0 => string 'a.php' (length=5)
    1 => string 'b.php' (length=5)
    2 => string 'c.php' (length=5)
  

请注意,如果您将其放入其中一个包含的文件中,则该功能的作用相同。您可以将函数放在c.php内(而不是a.php内),输出也不会改变。