Есть ли инструмент визуализации инклудов проекта на PHP ? иерархическую структура

misfit

Новичок
Есть ли инструмент визуализации инклудов проекта на PHP ? иерархическую структура

Дело в том, что когда какой нибуть проект (в данном случае проект пишется на PHP) разрастается до таких размеров, когда уже сложно представить его структуру (многочисленный инклуды в уинклудах, обьекты расширающие друг друга), возможно есть какой нибуть инструментарий, который поможет визуализировать всё это дело ? Тоесть указываем ему начальный файл index.php и программа уже строит иерархическую зависимость всех файлов. Что откуда и куда инклудится и т д... М ?
 

Активист

Активист
Команда форума
плохой проект ))
Нужно для начала прибраться в голове, и продумать структуру, что бы потом не вспоминать что где.

А такого средства никогда не видел. Можешь дебакить и все)
 

magic

lancer
Не всегда есть возможность доступа к документации.

В eclipse & Zend Studio - PHP Explorer/PHP Project Outline.
 

misfit

Новичок
Пробовал найти Eclipse для пхп - чёт не пойму. Насколько понял, это универсальная среда разработки, не только для PHP. Где качануть Eclipse именно для пхп ? чёт искал искал на оффсайте, так и не понял, куча каких то подпроектов, запутали...
 

Sokil.Dmytro

Новичок
http://www.phpclasses.org/browse/package/3322/
http://freshmeat.net/projects/code_map/

не совсем то наверное но попробуй мож пригодится
 

kirill538

Новичок
Нечто подобное можно получить с помощью xdebug + WinCacheGrind (отфильтровав результаты профайлера по require/include). Но результат будет, разумеется, для конкретного запроса, а не дерева каталогов. И тут где-то в форуме пролетала тулза, которая по файлам xdebug строит диаграмму вызовов в SVG.
 

misfit

Новичок
Автор оригинала: magic
В eclipse & Zend Studio - PHP Explorer/PHP Project Outline.
Поставил Eclipse, PHP Explorer - это просто окно с отображением всех файлов проекта. И что толку ? :) Гдез ависимость ? Чтот толи я чего то не понял, толи вы :)
 

Wicked

Новичок
misfit
я так и не понял, чего ты хочешь добиться. Ну увидишь ты этот граф зависимостей, и что дальше?

кстати, а что в подключаемых файлах? классы?

-~{}~ 16.07.07 11:51:

гады, накаркали :)

Сегодня и у меня заказчик попросил поискать тулзу, чтобы увидеть include map, so see graphically which files are
include where. А я так и не понял: ЗАЧЕМ?... При этом он приостановил переход на __autoload(), который я ему предложил незадолго до этого.

Лично я не знаю, какие файлы откуда инклюдятся, и чувствую себя при этом прекрасно.
 

jonjonson

Охренеть
Можно вопрос по понятию "зависимость"?
Типа что оно означает?..
Родительский класс для наследника?
Методы других объектов вызываемых в данном классе?
Функции вызываемые в данной функции?
И как это распихано в файлы?

Как было сказано выше, просто список инклудов ничего не даёт, тем более что он может быть вынесен в один файл. Кроме того, если фсе эти файлы содержат только декларацию классов, функций, то и порядок не важен для инклуда.
 

Wicked

Новичок
misfit
м.б. имеется в виду что-нибудь типа этого:
http://www.php.net/~helly/php/ext/spl/classRecursiveDirectoryIterator.html ?

-~{}~ 16.07.07 12:28:

jonjonson
ну плясать надо от того, что зависимость от файла -- это если файл не будет подключен, возникнет ошибка. А это и родительские классы, и создание объектов, и вызовы статических методов других классов, вызовы функций, ...
 

jonjonson

Охренеть
Wicked, так то оно так, да вот алгоритм может создавать двоякие ситуации... Например, по какому-то значению условия может инклудится файл класса реализующего пузырьковую сортировку, а по другому его значению - какой другой класс, с другой реализацией. Причём даже имя классов, например, будет одинаковым и файла, но файлы будут в разных папках... :-\
 

dark-demon

d(^-^)b
Wicked, видимо твой заказчик тоже читает этот форум :)
jonjonson, файл можно инклудить или не инклудить. можно проинклудить, но ничего из него не использовать. можно использовать, но гоняя в холостую :) так, о чём это я? ах, да! то, что какой-то файл в зависимости от условия может не проинклудиться, вовсе не значит что зависимости нет вообще. зависимость есть и её надо показать.
 

jonjonson

Охренеть
зависимость есть и её надо показать
dark-demon, только для начала нужно определить, что есть "зависимость", так как сами написали, что
можно проинклудить, но ничего из него не использовать
.

Вспоминаю свой личный опыт... Перерыл код на предмет инклуда одного файла... Не нашёл. Но долгий разбор полётов всё таки навёл на примерно такой код (передаю идею... строчек было больше... SQL запрос в "открытом" виде... его обработка и т.д.):
PHP:
$modules = ModulesManager::getRequredModulesList();
foreach($modules as $module) {
    include(MODULES_ROOT."/{$module}.php");
}
 

magic

lancer
Автор оригинала: misfit
Поставил Eclipse, PHP Explorer - это просто окно с отображением всех файлов проекта. И что толку ? :) Гдез ависимость ? Чтот толи я чего то не понял, толи вы :)
Если вам нужны именно диаграммы, поищите Dia + php2uml.
 

dark-demon

d(^-^)b
dark-demon, только для начала нужно определить, что есть "зависимость", так как сами написали, что
зависимость есть просто по факту наличия include('тра-та-та')
то, что она не всегда фатальна и скрипт может не вывалиться с fatal error её лишь маскирует, но не убирает.

Вспоминаю свой личный опыт...
у меня файлы инклудятся через специальную функцию => отследить что, откуда и куда инклудится не составляет труда. да, автоматика в таком случае диаграмку не построит - нужно писать расширение, которое бы ещё и бд анализировало... но как минимум можно выдать "из такого-то файла с такой-то строки идёт инклуд в неизвестном направлении".
 

Zetruger

ivan.chistyakov.name
можно сделать следующее

под каждым инклудом дописать вызов типа
if (DEBUG === 1) dump_inc_info($file, __FILE__, __LINE__);

ну и отправлять всю эту инфу в лог
и создать анализатор этого лога
 
Сверху