За последние 24 часа нас посетили 8753 программиста и 696 роботов. Сейчас ищут 216 программистов ...

Утилита для показа структуры php-приложения

Тема в разделе "Прочие вопросы по PHP", создана пользователем Sigizmund, 14 янв 2020.

  1. Sigizmund

    Sigizmund Активный пользователь

    С нами с:
    14 июн 2016
    Сообщения:
    37
    Симпатии:
    2
    Адрес:
    Жопа мира
    Здравствуйте. Я вот тут подумал, неплохо бы иметь для отображения структуры php-программы какую-то утилиту, которая бы показывала его структуру в виде дерева или графа. Меня интересует не иерархия папок, а файлы, которые инклудятся в index.php, цепочки вызываемых классов и их методов, чтобы было наглядно видно, как работает скрипт. Есть ли что-то подобное?
     
    Roman __construct нравится это.
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.608
    Симпатии:
    266
    Установи PHPStorm
     
  3. Sigizmund

    Sigizmund Активный пользователь

    С нами с:
    14 июн 2016
    Сообщения:
    37
    Симпатии:
    2
    Адрес:
    Жопа мира
    Это не то. Я пользовался PHPStorm пару лет, автокомплит по php там шикарный, больше плюшек особых не заметил. Да это и не то, что надо, мне нужно что-то типа консольной утилиты, которая бы строила древо приложения с запуска index.php и отображала в браузере или самой консоли.
     
  4. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.244
    Симпатии:
    110
    Хороший вопрос, подпишусь пожалуй на ответы :)
     
  5. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    788
    Симпатии:
    185
    Адрес:
    Санкт-Петербург
    Профайлер. Так называется то, что ты ищешь.
    Например, xhprof.
     
    Sigizmund нравится это.
  6. Sigizmund

    Sigizmund Активный пользователь

    С нами с:
    14 июн 2016
    Сообщения:
    37
    Симпатии:
    2
    Адрес:
    Жопа мира
    Оказалось у xdebug, которым я давно пользуюсь есть встроенный профайлер.
    Инструкция, как его завести на Open Server на Windows 10:

    1. Открываем конфигурацию php на Open Server( щёлкаем флажок в трее, Дополнительно -> Конфигурация ), раскомментируем xdebug, мои настройки:
      Код (Text):
      1. [Xdebug]
      2. zend_extension="%sprogdir%/modules/php/%phpdriver%/ext/php_xdebug.dll"
      3. xdebug.default_enable = 1
      4. xdebug.auto_trace = 0
      5. xdebug.collect_includes = 1
      6. ;xdebug.collect_params = 4
      7. ;xdebug.collect_return = 1
      8. ;xdebug.collect_assignments = 1
      9. ;xdebug.collect_vars = 1
      10. xdebug.dump.REQUEST = *
      11. xdebug.dump.SESSION = *
      12. xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD
      13. ;xdebug.dump.COOKIE =
      14. ;xdebug.dump.FILES =
      15. ;xdebug.dump.GET =
      16. ;xdebug.dump.POST =
      17. xdebug.dump_globals = 1
      18. xdebug.dump_once = 1
      19. xdebug.dump_undefined = 1
      20. xdebug.extended_info = 1
      21. ;xdebug.file_link_format = ""
      22. xdebug.idekey = "vscode"
      23. ;xdebug.manual_url = "http://www.php.net"
      24. xdebug.max_nesting_level = 256
      25. xdebug.overload_var_dump = 1
      26. ;xdebug.profiler_append = 1
      27. xdebug.profiler_enable = 0
      28. xdebug.profiler_enable_trigger = 1
      29. xdebug.profiler_output_dir="%sprogdir%/userdata/temp/xdebug/"
      30. xdebug.profiler_output_name = "cachegrind.out.%H%R"
      31. xdebug.remote_autostart = 0
      32. xdebug.remote_enable = 1
      33. ;xdebug.remote_handler = "dbgp"
      34. ;xdebug.remote_host = "localhost"
      35. ;xdebug.remote_log = "none"
      36. ;xdebug.remote_mode = "req"
      37. ;xdebug.remote_port = 9000
      38. ;xdebug.scream = 1
      39. ;xdebug.show_exception_trace = 0
      40. ;xdebug.show_local_vars = 1
      41. ;xdebug.show_mem_delta = 1
      42. ;xdebug.trace_format = 1
      43. ;xdebug.trace_options = 1
      44. xdebug.trace_output_dir = "%sprogdir%/userdata/temp/xdebug/"
      45. ;xdebug.trace_output_name = "trace.%H%R"
      46. xdebug.var_display_max_children = 256
      47. ;xdebug.var_display_max_data = 1024
      48. xdebug.var_display_max_depth = 16
      49. ;xdebug.remote_cookie_expire_time = 3600
    2. Нужна прога, для отображения Cachegrind файлов, я выбрал https://github.com/jokkedk/webgrind/wiki/Installation Просто залил содержимое репозитория на локальный домен webgrind.loc, перезагрузил сервер и заработало. На любом локальном сайте добавляю в строку адреса get запрос ?XDEBUG_PROFILE потом на webgrind.loc смотрю логи.
    3. Единственное, что не строится граф, хотя Python и Graphviz установлены. В конфиге webgrind прописал:
      PHP:
      1. /**
      2.      * Path to python executable
      3.      */
      4.     static $pythonExecutable = 'C:/Python27/python.exe';
      5.  
      6.     /**
      7.      * Path to graphviz dot executable
      8.      */
      9.     static $dotExecutable = 'C:\Program Files (x86)\Graphviz2.38\bin\dot.exe';
    Если у кого получится графы завести, напишите как получилось в этой теме.
     
    Roman __construct нравится это.
  7. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    322
    Симпатии:
    59
    PHP:
    1.     $html = '';
    2.  
    3.     $inc = get_included_files();
    4.     $inc_c = sizeOf ( $inc );
    5.  
    6.     if ( $inc_c )
    7.     {
    8.        foreach ( $inc as $i )
    9.        {
    10.          $html .= '<div>'.$i.'</div>';
    11.        }
    12.        unset ( $i );
    13.     }
    14.  
    15.     print 'Файлов: <b>'.$inc_c.'</b> ' . $html;
    16.  
    17.     unset ( $html, $inc );
    Но таки лучше "брать" готовые и мощные инструменты. Про вызов классов и прч. не в курсе к сожалению :(
     
  8. Sigizmund

    Sigizmund Активный пользователь

    С нами с:
    14 июн 2016
    Сообщения:
    37
    Симпатии:
    2
    Адрес:
    Жопа мира
    Для отображения CacheGrind файлов на Windows лучше использовать прогу QCacheGrind https://sourceforge.net/projects/qcachegrindwin/ Она и цепочки вызовов показывает, и дерево строит.