PHP利用反射根據類名反向尋找類所在檔案

王明輝發表於2018-08-16

有時候分析原始碼時,會被博大精深的層層程式碼搞得暈頭轉向,不知道類是定義在哪個檔案裡的,有時候IDE所提供的方法宣告未必準確。在這種情況下,我們可以利用反射找到類所在的檔案。

在你發現例項化類的地方(例如class1中發現了class2的例項化,但是你不知道class2定義在哪個檔案),輸入以下程式碼:

$object = new ReflectionClass($b);
$methods = $object->getMethods(); //這裡之所以用getMethods(),是因為我們並不知道此類有哪些方法,所以全部獲取,然後取第0個
$method = $methods[0]; 
$declaringclass = $method->getDeclaringClass();
$filename = $declaringclass->getFilename();

此時的$filename就是類所在的檔名。

當然,你可以寫成

$filename = (new ReflectionClass($a))->getMethods()[0]->getDeclaringClass()->getFilename();

 

相關文章