有時候分析原始碼時,會被博大精深的層層程式碼搞得暈頭轉向,不知道類是定義在哪個檔案裡的,有時候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();