2016-10-11 39 views
2

夥計們, 我想呼應的是遞歸調用的情況下最後腳本 例如所有文件的字符串PHP打印在上下文中的所有文件名調用腳本

  • 的index.php包括Ç .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

可以使用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內),輸出不會改變。

+0

該工作,但現在的問題是,如果有10個文件包含在任何一個文件中,它將打印全部, –

+0

這就是正確的,它會給你所有的文件,包括整個運行你的代碼的時間。 – Dekel