簡體   English   中英

PHP(或PYTHON)將所有包含的文件合並到一個大文件中(遞歸嗎?)

[英]PHP (OR PYTHON) Merge all Included files into a single large file (recursive?)

我有一個使用include的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代碼替換包含文件,並且它將替換包含文件中的所有包含文件的代碼,直到所有代碼都合並為一個文件為止文件(遞歸函數?)

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

提前致謝

編輯:我知道使用模塊化代碼通常會更好,但這不是我的問題。 我問我如何能做到這一點? 不是模塊化與未模塊化代碼的優勢。

我從上面的評論

我認為您可能會混淆包含遞歸嗎? 您是要將所有代碼移到一個文件中還是僅包含一次? 從長遠來看,隨着代碼的增長,我將使您的代碼與眾不同,並且包括它(因此您不會被一個巨大的1腳本應用所困擾)

可能的解決方案

我認為您要問的是“我怎么只包含一次文件?”

我會說,更新包含文件以具有include_once()調用。 因為在將代碼組合在一起時,它不會重新包含這些文件。

當您沖洗並清理時,這將為您提供一個可行的示例。

更新的答案

好的,根據反饋,如果您想合並所有文件,則必須經過一個具有主要PHP腳本(或其他語言)的過程,

  1. 遞歸地閱讀每個* .php文件
  2. 當遇到includerequire ,應打開該文件
  3. 最終將文件解析為TEXT,然后在1個巨型文件中輸出TEXT。

我認為這可以解決您的問題phpcompiler.org

phc最初支持內置的PHP的編譯時處理。 啟用此功能會在AST中將包含的語句插入到include語句的位置。 包含的函數,類和接口成為文件頂級范圍的一部分。 如果phc無法處理include語句(例如,如果找不到文件),則會發出警告,並將include語句保留在原位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM