PHP(或PYTHON)将所有包含的文件合并为一个大文件(递归?)

时间:2012-01-31 15:13:11

标签: php python recursion

我有一个使用includes的PHP脚本。包含的文件也有自己的包含。 所有文件都位于Web服务器上的同一文件夹中。我想要一个单独的PHP脚本,将合并所有这些 到一个PHP文件。我将提供带有文件的新脚本以开始处理(例如上面的index.php)。 我如何使用PHP执行此操作?例如,说我有这些文件:

---------------------
index.php
<?php

*other code1*
include 'header.php';
*other code2*

?>

----------------------
header.php
<?php

*other code3*
include 'subheader.php';
*other code4*

?>


----------------------
subheader.php
<?php

*other code5*

?>


The result of the script begining from the index.php would be:

merged_file.php
<?php

*other code1*
    *other code3*
        *other code5*
    *other code4*
*other code2*

?>

,即代码将全部放在一个大文件中,并以与以前完全相同的顺序执行。

所以基本上它将通过脚本,每次它找到一个包含它将用给定的包含文件中的相关PHP代码替换include,它将替换包含的任何包含的代码,直到所有代码都已合并到单个文件(递归函数?)

注意:我想要在文件中返回未解析的PHP代码。

提前致谢

编辑:我理解其模块化代码通常更好的做法,但这不是我的问题。我问我怎么能做到这一点?不是模块化对的好处 非模块化代码。

2 个答案:

答案 0 :(得分:3)

我的评论

  

我想你可能会因为递归而感到困惑?你是   试图将所有代码移动到一个文件中或只包含一次?我会   保持你的代码分离,并包含,从长远来看,它更容易   随着代码的增长(所以你不会被一个巨大的1脚本应用程序困住)

可能的解决方案

我认为你问的是“我怎么只包含一次文件?”

我想说,更新包含文件以进行include_once()调用。因为在将代码组合在一起时,它不会重新包含这些文件。

这将让你有一个工作的例子,当你清理出来并清理。

更新了答案

好的,根据反馈,如果你想要合并所有文件,你必须经历一个主要PHP脚本(或其他语言)的过程

  1. 递归读取每个* .php文件
  2. 当它遇到includerequire时,应该打开该文件
  3. 最终将文件解析为TEXT,然后在1个巨型文件中输出TEXT。

答案 1 :(得分:3)

我认为这可以解决您的问题phpcompiler.org

phc最初支持PHP内置的编译时处理。启用此功能会在AST语句的位置插入包含的语句。包含的函数,类和接口成为文件顶级作用域的一部分。如果phc无法处理include语句(例如,如果找不到该文件),则会发出警告,并保留include语句。

相关问题