2016-08-30 21 views
3

有沒有辦法檢測或查找包含類和代碼的文件,這些文件將在自動加載或需要時執行?像例子左右:如何查找包含類和代碼的PHP文件,該代碼將在require/include期間執行?

<?php 
class SomeClass 
{ 
    private $variable; 
    public function __construct($variable) { 
    $this->variable = $variable; 
    } 
} 

// example usage 
$foo = new SomeClass('test'); 
var_dump($foo); 

// some other code 

我需要找到他們在一箇舊的項目,有太多的文件,手動檢查。

謝謝。

編輯:我不能自動加載所有這些(因爲我不知道在什麼文件中不需要的代碼可能),甚至不需要顯示任何執行的代碼,除非它會有一些錯誤。

+0

您的編輯器不提供目錄搜索功能嗎? – RiggsFolly

+0

如果你有outoload,該腳本應該指向你的文件夾或文件夾結構和文件命名約定 – RiggsFolly

+0

如果你有一個需求,它應該指向你的具體文件 – RiggsFolly

回答

0

也許你搜索單詞類和管新單詞的結果?

grep -r --include "*.php" 'class' | grep 'new' 
+0

有趣的方法,但不會提供太多的幫助,因爲可以有許多「新」用法在課堂上和/或沒有外部(可能只是轉儲或其他代碼)。 – Dukecz

0

適當(和最不容易出錯但很難)的方式來做到這一點會使用PHP的Tokenizer。您可以使用glob獲取所有PHP文件。然後當它們包含T_CLASS(或T_NAMESPACE)令牌時,使用標記器將它們標記爲類文件,然後跳過該類本身並查找除這些令牌(以及命名空間,註釋等)以外的任何內容文件名,當你找到它。

不那麼合適方法(和肯定一個容易出現假陽性)會寫自己的簡單解析器(這可能是比使用標記生成器更難),或使用與AWK結合一些簡單的正則表達式找出的東西那就是類和名字空間。雖然我對這方面的經驗並不是很豐富(但我確信只有正則表達式是不夠的),所以我無法真正提供一個例子。