有時候分析源碼時,會被博大精深的層層代碼搞得暈頭轉向,不知道類是定義在哪個文件里的,有時候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();
