PHP-构建包含/要求树
目前,我正在解析PHP代码,并将活着构建一个include/require和functions树:我所说的include/require树是指一个树,在这个树中,很明显哪个文件包含了来自其他文件的内容——在这里,我必须注意循环,但它是可行的。假设我有一个文件a.php,它依次包括b.php、c.php和c.php,进一步包括d.php,应该以显示层次结构的方式构建树 如果函数也可以这样做的话,那就太好了,其中一个函数调用第二个函数,而第二个函数又调用第三个函数PHP-构建包含/要求树,php,parsing,tree,Php,Parsing,Tree,目前,我正在解析PHP代码,并将活着构建一个include/require和functions树:我所说的include/require树是指一个树,在这个树中,很明显哪个文件包含了来自其他文件的内容——在这里,我必须注意循环,但它是可行的。假设我有一个文件a.php,它依次包括b.php、c.php和c.php,进一步包括d.php,应该以显示层次结构的方式构建树 如果函数也可以这样做的话,那就太好了,其中一个函数调用第二个函数,而第二个函数又调用第三个函数 我的问题是这样的工具或脚本是否已经
我的问题是这样的工具或脚本是否已经可用,因为我真的不需要任何花哨的东西,但另一方面,我不想重新发明轮子。我想也许你可以使用类似REGEX的东西来解析PHP文件,但不确定是否有类似DOMDocument for PHP的东西可以更容易地获取任何include或require的内容。大概是这样的:
function make_tree($php_file){
//specify output file
$output = ""
//set counter
$counter = 1;
//make REGEX or other parsing array of
//all the include, include_once,
//require, and require_once elements
foreach($regex_array[] as $url){
$output .= $counter . ": Page included/required " . $url . ".";
//run make_tree on subpage
make_tree($url);
//increment counter
$counter = $counter + 1;
}
//output the output
return $output;
}
这是非常粗糙的,可能需要一些修改,但它似乎应该工作。样本输出:
1: Page included/required first_require.php. //required by your first document
1: Page included/required req1.php //required by first_require.php
2: Page included/required req2.php //required by first_require.php
1: Page included/required penguin.php //required by req2.php
3: Page included/required req3.php //required by first_require.php
嵌套数组可能会解决一些主要问题,但我现在不确定如何实现它。PHP内置函数似乎最适合这种情况。例如:
$included_files=获取包含的_文件
foreach$包含作为$filename的\u文件{
echo$filename\n;}