Jak mogę się dowiedzieć, w którym pliku i linii została zdefiniowana dana funkcja?
109
Możesz to również zrobić w samym PHP:
$reflFunc = new ReflectionFunction('function_name');
print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();
$reflFunc->isInternal() === TRUE
oznacza -> getFileName () i -> getStartLine () zwróci FALSE.$reflFunc = new ReflectionMethod($this, 'method_name');
Albo użyj IDE, które na to pozwala (polecałbym Eclipse PDT), albo zawsze możesz go grepować, jeśli używasz Linuksa, lub używając wingrep. W Linuksie byłoby to coś takiego:
z folderu głównego projektu.
źródło
Jeśli używasz IDE, takiego jak Netbeans, możesz CTRL + kliknąć funkcję, która przeniesie Cię do miejsca, w którym została zdefiniowana, zakładając, że plik znajduje się w zdefiniowanym folderze projektu.
Nie ma jednak kodu ani funkcji, która mogłaby to zrobić.
źródło
Zakładam, że przez „opisany” masz na myśli „zdefiniowany”. W tym celu idealnie potrzebujesz przyzwoitego środowiska IDE, które może to zrobić.
źródło
Oto podstawowa funkcja, która skanuje całe pliki projektu w poszukiwaniu określonego ciągu i informuje, w którym pliku się znajduje i od której pozycji znaku zaczyna się, używając tylko podstawowego php. Mam nadzieję, że to komuś pomoże ...
źródło
inny sposób sprawdzenia, gdzie jest zdefiniowana funkcja, spróbuj przedefiniować funkcję, system błędów PHP po prostu zwróci błąd informujący o miejscu wcześniej zdefiniowanej funkcji
źródło
Podoba mi się rozwiązanie Toma, więc pomyślałem, że mógłbym podzielić się nieco więcej trikami z ReflectionFunction (powinno działać na każdym PHP 5):
jednowierszowy do wydrukowania nazwy pliku:
Należy pamiętać, że nie pokaże on lokalizacji funkcji wewnętrznych (takich jak _ ), ale nadal może wydrukować dla niego interfejs API, jak poniżej.
wydrukować definicję i parametry funkcji:
Przykład:
źródło
Będziesz potrzebować IDE obsługującego funkcję „Open Function Declaration”. Dobrym rozwiązaniem dla php jest Eclipse PDT.
Aby poszukać definicji funkcji, podświetl nazwę funkcji, przytrzymaj CTRL + kliknij nazwę.
źródło