有沒有辦法生成一段代碼所使用的所有函數?查看PHP項目或代碼使用哪些函數/庫的快速方法
使用Java很容易,因爲您只需在代碼頂部複製import語句即可。使用PHP,因爲您不需要導入庫,所以更加困難。
我在快速解決方案之後(如果有的話)出於文檔目的。
有沒有辦法生成一段代碼所使用的所有函數?查看PHP項目或代碼使用哪些函數/庫的快速方法
使用Java很容易,因爲您只需在代碼頂部複製import語句即可。使用PHP,因爲您不需要導入庫,所以更加困難。
我在快速解決方案之後(如果有的話)出於文檔目的。
我想說這在PHP中更加困難,考慮到諸如call_function
和eval
之類的功能,它們允許調用函數的方式。您最好的辦法是找到include
,include_once
,require
和require_once
的所有實例,但您無法確定您的列表是如此簡潔。還有類自動加載需要考慮。
get_defined_functions()給出了一個數組,列出了可用於代碼的所有函數(用戶定義的和內置的),但不會告訴您它們是否實際使用。
編輯
也有PHPUnit中和Xdebug "Code Coverage" tools包括功能,可以提供這樣的信息基於代碼的實際執行
你可以看到什麼是使用這些功能:
// get vars
$vars = get_defined_vars();
// get constants
$consts = get_defined_constants();
// get functions
$funcs = get_defined_functions();
var_dump($vars);
var_dump($consts);
var_dump($funcs);
更多信息:
您可以使用get_declared_classes
,get_declared_interfaces
和get_defined_functions
但不會顯示它們是否被稱爲或不只是他們是否已被定義(包括) 。
我最近一直在想這個。我的想法是,你可以添加一些邏輯到你的自動加載器,以保存所有被調用到日誌文件(注意重複條目)
理想情況下,這可能是你可以打開,通過你的整個項目,然後檢查日誌文件以查看使用的內容,然後將其關閉。 (對我來說,這意味着它只在我的應用程序處於調試模式時纔有效)
我的解決方案並不是要在執行過程中的某個特定點上定義什麼,而是爲了跟蹤您的自定義函數/庫,在將項目上傳到服務器時需要包含這些信息。例如,如果你有一堆通用庫,並且你只需要記住爲某個項目上傳哪些庫。這可能不是你問的具體問題,但我認爲它已經足夠接近你的問題來提及它。