В PHP get_included_files()
возвращает массив с именами включенных файлов.
Аналогичным образом, есть ли способ получить массив с именами вызываемых функций с параметрами?
Я пытался достичь желаемого и, наконец, придумал разумное решение.
Создайте класс с именем Debug
и включите его над каждым файлом, который вы хотите отлаживать. Создайте функцию, которая хорошо печатает информацию, хранящуюся в $calls
.
class Debug { private static $calls; public static function log($message = null) { if(!is_array(self::$calls)) self::$calls = array(); $call = debug_backtrace(false); $call = (isset($call[1]))?$call[1]:$call[0]; $call['message'] = $message; array_push(self::$calls, $call); } }
Вызовите эту функцию каждый раз, когда вы объявляете функцию первой строки в функции: Debug::log($message(optional) )
Таким образом, Есть ли способ получить массив с именами вызываемых функций с параметрами?
Нет.
Что вы можете сделать, это debug_backtrace()
который отобразит все вызовы функций (с параметрами), которые приведут к выполнению строки, из которой вы выполняете обратную трассировку («стек вызовов»), но это отличается от всех функций, которые были когда-либо вызываемый в скрипте.
Что ты хочешь делать? Возможно, есть другой подход.
Я искал что-то подобное и нашел трассировку xdebug очень полезной.
Вот пример того, как это могло бы выглядеть: http://devzone.zend.com/1135/tracing-php-applications-with-xdebug/
Не то, чтобы я знал.
Однако вы можете использовать debug_backtrace для получения текущей активной иерархии функций / методов.
Я не думаю, что есть способ сделать то, что вы хотите. Сожалею.
Самое близкое, что я могу получить, это function_exists()
, которая сообщит вам, загружена ли определенная функция.
Что именно вы хотите достичь здесь? Я не вижу пример использования (за пределами экрана типа php_info ()), для которого потребуется список доступных функций.
Вам нужно будет установить его как расширение, но профайлер, такой как XHProf , даст вам разбивку о том, какие функции вызываются и как долго они берутся, а также callgraph.
XHProf или Webgrind / KCachegrind покажут вам вызываемые функции, но не их параметры.
Вы также можете использовать get_defined_functions , который дает вам список всех функций, определенных. Но он не покажет вам, какие функции действительно были вызваны, и с какими параметрами.
Если вам действительно нужно знать параметры, я не знаю никаких инструментов, кроме специализированного регистратора, как тот, который был предложен Хенце в его ответе.