Здравствуйте. Я вот тут подумал, неплохо бы иметь для отображения структуры php-программы какую-то утилиту, которая бы показывала его структуру в виде дерева или графа. Меня интересует не иерархия папок, а файлы, которые инклудятся в index.php, цепочки вызываемых классов и их методов, чтобы было наглядно видно, как работает скрипт. Есть ли что-то подобное?
Это не то. Я пользовался PHPStorm пару лет, автокомплит по php там шикарный, больше плюшек особых не заметил. Да это и не то, что надо, мне нужно что-то типа консольной утилиты, которая бы строила древо приложения с запуска index.php и отображала в браузере или самой консоли.
Оказалось у xdebug, которым я давно пользуюсь есть встроенный профайлер. Инструкция, как его завести на Open Server на Windows 10: Открываем конфигурацию php на Open Server( щёлкаем флажок в трее, Дополнительно -> Конфигурация ), раскомментируем xdebug, мои настройки: Код (Text): [Xdebug] zend_extension="%sprogdir%/modules/php/%phpdriver%/ext/php_xdebug.dll" xdebug.default_enable = 1 xdebug.auto_trace = 0 xdebug.collect_includes = 1 ;xdebug.collect_params = 4 ;xdebug.collect_return = 1 ;xdebug.collect_assignments = 1 ;xdebug.collect_vars = 1 xdebug.dump.REQUEST = * xdebug.dump.SESSION = * xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD ;xdebug.dump.COOKIE = ;xdebug.dump.FILES = ;xdebug.dump.GET = ;xdebug.dump.POST = xdebug.dump_globals = 1 xdebug.dump_once = 1 xdebug.dump_undefined = 1 xdebug.extended_info = 1 ;xdebug.file_link_format = "" xdebug.idekey = "vscode" ;xdebug.manual_url = "http://www.php.net" xdebug.max_nesting_level = 256 xdebug.overload_var_dump = 1 ;xdebug.profiler_append = 1 xdebug.profiler_enable = 0 xdebug.profiler_enable_trigger = 1 xdebug.profiler_output_dir="%sprogdir%/userdata/temp/xdebug/" xdebug.profiler_output_name = "cachegrind.out.%H%R" xdebug.remote_autostart = 0 xdebug.remote_enable = 1 ;xdebug.remote_handler = "dbgp" ;xdebug.remote_host = "localhost" ;xdebug.remote_log = "none" ;xdebug.remote_mode = "req" ;xdebug.remote_port = 9000 ;xdebug.scream = 1 ;xdebug.show_exception_trace = 0 ;xdebug.show_local_vars = 1 ;xdebug.show_mem_delta = 1 ;xdebug.trace_format = 1 ;xdebug.trace_options = 1 xdebug.trace_output_dir = "%sprogdir%/userdata/temp/xdebug/" ;xdebug.trace_output_name = "trace.%H%R" xdebug.var_display_max_children = 256 ;xdebug.var_display_max_data = 1024 xdebug.var_display_max_depth = 16 ;xdebug.remote_cookie_expire_time = 3600 Нужна прога, для отображения Cachegrind файлов, я выбрал https://github.com/jokkedk/webgrind/wiki/Installation Просто залил содержимое репозитория на локальный домен webgrind.loc, перезагрузил сервер и заработало. На любом локальном сайте добавляю в строку адреса get запрос ?XDEBUG_PROFILE потом на webgrind.loc смотрю логи. Единственное, что не строится граф, хотя Python и Graphviz установлены. В конфиге webgrind прописал: PHP: /** * Path to python executable */ static $pythonExecutable = 'C:/Python27/python.exe'; /** * Path to graphviz dot executable */ static $dotExecutable = 'C:\Program Files (x86)\Graphviz2.38\bin\dot.exe'; Если у кого получится графы завести, напишите как получилось в этой теме.
PHP: $html = ''; $inc = get_included_files(); $inc_c = sizeOf ( $inc ); if ( $inc_c ) { foreach ( $inc as $i ) { $html .= '<div>'.$i.'</div>'; } unset ( $i ); } print 'Файлов: <b>'.$inc_c.'</b> ' . $html; unset ( $html, $inc ); Но таки лучше "брать" готовые и мощные инструменты. Про вызов классов и прч. не в курсе к сожалению
Для отображения CacheGrind файлов на Windows лучше использовать прогу QCacheGrind https://sourceforge.net/projects/qcachegrindwin/ Она и цепочки вызовов показывает, и дерево строит.