Ответ 1
[UPDATE: этот ответ не обрабатывает пространства имен, поэтому он в основном устарел. Я оставлю его здесь, если кто-нибудь найдет подходящий подход DOT.]
Вот простой способ графа наследования классов в PHP.
Grep для определения классов, а затем преобразуйте вывод grep в синтаксис DOT. ПРИМЕЧАНИЕ. Этот процесс потребует проб и ошибок в вашей ситуации. Запустите grep отдельно и настройте его, чтобы показать правильные строки определения класса перед тем, как поместить его в script!
Этот script был для PHP на стандартном * nix (я использовал Ubuntu), с установленным графическим интерфейсом и используя grep -v, чтобы исключить некоторые каталоги, которые не представляли интереса, потому что я смотрел на CakePHP-кодовую базу. В этой ситуации Fdp работал лучше, чем sfdp, dot, circo или neato.
Создать файл generateClassHierarchy.sh
#!/bin/bash
echo 'digraph code {' > code.dot;
grep -r "^class " * | grep -v "^app/vendors" | grep -v "^cake/" | grep -v "Binary file" | sed 's/.*://' | sed 's/class / /' | sed 's/ extends / -> /' | sed 's/ implements .*//' | sed 's/ \?{.*$//' | sort >> code.dot
echo '}' >> code.dot;
fdp -Tpng -ocode.fdp.png code.dot 2> /dev/null # Ignore syntax error
echo "OK";
Тогда просто:
cd /var/www/my_app/ # or wherever
bash ~/shell/generateClassHierarchy.sh # or wherever
eog code.fdp.png
Замените eog на предпочтительный просмотрщик изображений. Я запустил это на Zend Framework в качестве теста и составил 22 мегабайт PNG-графика. Запуск его только на Zend_Db показывает вам это (пример на моем сайте):
http://chapman.id.au/generate-php-class-inheritance-diagrams-in-graphviz