Генератор PHP UML [закрыт]

Как создать диаграмму UML на основе существующих классов в PHP?


person Jeffrey04    schedule 26.12.2008    source источник
comment
Я больше не работаю с PHP, поэтому у меня нет кода для реального тестирования. Когда я опубликовал это, ни один из первоначальных ответов не делал достаточно, но с тех пор многое изменилось. Я работал с PHP 5.2, а сейчас PHP7.   -  person Jeffrey04    schedule 25.09.2017


Ответы (11)


Существует также инструмент PHP UML, доступный на pear.

PHP_UML:

  • Может создавать файлы UML/XMI в версии 1.4 или версии 2.1 (логические представления, представления компонентов и развертывания).
  • Может генерировать документацию API в формате HTML.
  • Может генерировать PHP-код (скелет кода) из заданного файла XMI.
  • Может преобразовывать содержимое UML/XMI из версии 1.4 в версию 2.1.

Установите его в командной строке через:

$ pear install pear/php_uml

(Раньше это был $ pear install pear/php_uml-alpha, но с тех пор пакет стал стабильным.)

Создайте свой xmi:

$ phpuml -o project.xmi

person kguest    schedule 26.02.2009
comment
по какой-то причине pear.com не любит эту ссылку без косой черты в конце: pear.php.net /пакет/PHP_UML - person Stephen Fuhry; 08.01.2010
comment
@Стивен, да, я тоже это заметил! Если вы нажмете на ссылку, она выдаст вам 404, но если вы выберете адресную строку и нажмете ввод, это сработает. - person nickf; 16.01.2010
comment
Несколько лет спустя команда стала pear install PHP_UML-1.6.1 (см. pear.php.net/package/PHP_UML/ загрузить/Все или pear.php.net/package/PHP_UML) - person Ben; 22.11.2013
comment
Это должен быть принятый ответ. Средство эффектное. - person Xofo; 19.02.2016
comment
Установлена ​​версия 1.6.2, но возникает ошибка: «phpuml» не распознается как внутренняя или внешняя команда, - person Dariux; 24.07.2016
comment
не работает с пхп 7 - person DevWL; 05.05.2017
comment
@DevWL: Это не так уж удивительно - автор/сопровождающий может быть рад получить помощь в том, чтобы заставить его работать с PHP 7, если вы чувствуете себя щедрым. - person kguest; 12.05.2017

Я настоятельно рекомендую BOUML, который:

  • чрезвычайно быстр (самый быстрый инструмент UML из когда-либо созданных, ознакомьтесь с тестами),
  • имеет надежную поддержку импорта и экспорта PHP (также поддерживает C++, Java, Python)
  • мультиплатформенность (Linux, Windows, другие ОС),
  • полнофункциональный, впечатляюще интенсивно развивающийся (посмотрите историю разработки, трудно поверить, что такой быстрый прогресс возможно).
  • поддерживает плагины, имеет модульную архитектуру (это позволяет вносить вклад пользователей, похоже, сообщество BOUML формируется)
person Community    schedule 19.05.2009
comment
Бенчмарки выглядят действительно впечатляюще. Мне нравится корпоративный архитектор, но у него нет поддержки PHP. Я передам этот инструмент, спасибо. - person Paul Dragoonis; 16.08.2010
comment
@Paul Dragoonis Sparx Systems Enterprise Architect имеет поддержку PHP - и не худший. - person ax.; 09.06.2011
comment
На веб-странице BOUML теперь указано: ВНИМАНИЕ: Из-за постоянных нарушений лицензии, нападений и оскорблений со стороны людей из Википедии [...] я решил прекратить работу над Bouml, за исключением исправления ошибок. - person MPV; 06.07.2011
comment
@MPV - я могу установить его из Центра программного обеспечения Ubuntu - person Imran Omar Bukhsh; 14.01.2012
comment
[18 декабря 2011 г.] Загрузка приостановлена ​​до дальнейшего уведомления с официального веб-сайта. http://bouml.free.fr/download.html — это потому, что мне нужно было версия для Win7. Я предполагаю, что он все еще может быть доступен в репозиториях Ubuntu - нужно проверить - person Val Redchenko; 07.02.2012
comment
@ValRedchenko BOUML 5.0.1 Выпущен 22 февраля 2012 г. Он все еще доступен. - person Shiplu Mokaddim; 26.03.2012
comment
Версия 6.1 выпущена 23 сентября 2012 г.. Похоже, развитие снова пошло в гору. Никаких уведомлений о замедлении, остановке и т. д. - person Andrew Ensley; 04.10.2012
comment
BOUML 6.3, выпущенный 2 ноября 2012 года. Похоже, он снова ожил! - person Felipe; 19.11.2012
comment
На официальной странице с ценами на сайте написано «Лицензия на хост», что это значит? - person Sobiaholic; 22.09.2013
comment
Документация ужасна, я так и не понял, как сгенерировать единую диаграмму. Может быть, вы можете написать учебник по этому - person unifreak; 18.04.2019

phUML

phUML — это полностью автоматический генератор диаграмм классов UML, написанный на PHP под лицензией BSD. Он способен анализировать любой объектно-ориентированный исходный код PHP5 и создавать соответствующее изображение структуры oo на основе спецификации UML.

Пример UML

./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png

Пошаговое руководство

person Anthony Hatzopoulos    schedule 11.12.2013
comment
для загрузки требуется SVN/subversion и на самом деле не указано, какая лицензия на исходный код, но выглядит хорошо! да, я был бы осторожен при просмотре исходного кода, на него абсолютно нет лицензии, и я думаю, что единственный файл readme находится на сайте. - person ; 27.01.2014
comment
Ссылка на лицензию находится прямо на боковой панели веб-сайта проекта под автором Creative Commons: creativecommons.org/licenses/by-nc-sa/3.0 - person Anthony Hatzopoulos; 28.01.2014
comment
это лицензия на содержимое сайта, ЛИЦЕНЗИЯ на проект должна быть включена в сам проект. - person ; 29.01.2014
comment
Я отправил электронное письмо автору, Якобу, и он ответил обновлением репозитория с четким и четким Лицензия bsd из 3 пунктов - person Anthony Hatzopoulos; 31.01.2014
comment
Я скачал это и заставил его работать после небольшой возни. Было очень приятно, за исключением того, что я не могу заставить ассоциации работать, но я уверен, что разберусь с этим. Красиво, просто. Хотя нет графического интерфейса, но это не так уж и важно. - person Impulss; 05.02.2014
comment
Мне нравится стиль вывода dot, в котором все объекты располагаются линейно, а не в форме звезды (неато) с ассоциациями по всей папке класса проекта: ~/phuml/app/phuml -r ~/path_to_your/classes/ -graphviz -createAssociations true -dot ~/output_folder/test_dot.png - person Anthony Hatzopoulos; 05.02.2014
comment
Оригинал Якоба Вестхоффа был удален с его сайта; Я нашел ответвление на github.com/greenantdotcom/phUML. - person Mikko Rantalainen; 06.03.2014
comment
@MikkoRantalainen Официальный репозиторий github: github.com/jakobwesthoff/phuml (я обновил ответ) - person Anthony Hatzopoulos; 07.03.2014

лучшее программное обеспечение (Windows), которое я нашел для работы с PHP и UML, — это Sparx Systems Архитектор предприятия. помимо множества функций, он поддерживает следующие для PHP:

  • Реконструировать объектно-ориентированный PHP в диаграммы классов UML
  • Создание определений классов PHP из диаграмм классов UML
  • Синхронизируйте изменения, сделанные в классе UML, с соответствующим определением класса PHP.
  • Синхронизируйте изменения, сделанные в определении класса PHP, с соответствующим классом UML.
  • Создайте диаграммы последовательности UML, чтобы показать, какие классы PHP используют и как они используются.
  • Создание подробной документации вашего PHP-кода в стандартном формате RTF и HTML.
  • Выполняйте разработку кода на моделях для создания базовых страниц PHP.

не бесплатно (199 долларов), но определенно стоит своих денег.

person ax.    schedule 15.04.2009
comment
Вау, это действительно полезная и профессиональная программа, спасибо за совет!! Я только что попробовал генерировать диаграмму классов UML с помощью метода обратного проектирования Sparx EA из исходного кода PHP, и это сработало как шарм, я был потрясен, насколько хорошо это работает. :D По мере того, как наши проекты становятся все больше и больше, и мы создаем все больше и больше объектов, становится все труднее следить за нашим собственным кодом, но это очень помогает в этом, так как он правильно генерирует диаграммы UML (из конечно, могут быть исключения) ПОСЛЕ того, как мы закончили код. Это даже помогает упростить отношения между объектами. - person Sk8erPeter; 09.06.2011
comment
@ax - я новичок, и я немного теряюсь в их списке функций (при сравнении выпусков). Как будет называться функция, позволяющая мне вводить PHP-код (или ссылаться на PHP-файлы) и получать взамен диаграмму? Пытаюсь выяснить, какая версия мне может понадобиться. - person JDelage; 01.08.2012

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

person Vinko Vrsalovic    schedule 26.12.2008
comment
я попробовал autodia, но почему-то не могу создать точную диаграмму классов (php5) - person Jeffrey04; 26.12.2008

Также есть php2xmi. Вам нужно немного поработать вручную, но он генерирует все классы, поэтому все, что вам нужно сделать, это перетащить их в диаграмму классов в Зонтик.

В противном случае создание диаграммы с использованием отражения и графической визуализации довольно просто. У меня есть фрагмент здесь, который вы можете использовать как отправная точка.

person troelskn    schedule 27.12.2008

Вот как я это сделал (непосредственно из кода в чертеж PDF без ручного рисования чего-либо):

  1. Используйте BOUML для "реверсивного проектирования PHP-кода" [sic] для извлечения модели класса (BOUML доступен из "universe "репозиторий Ubuntu). Я серьезно рекомендую BOUML для этого шага, потому что это очень быстро по сравнению со многими другими программами, которые я пробовал. Кроме того, кажется, что BOUML правильно извлекает модель (для тех частей, которые BOUML даже пытается извлечь).
  2. Используйте BOUML для экспорта модели в файл XMI 1.4.
  3. Используйте ArgoUML для импорта указанного файла XMI (для этого шага вы можете использовать версию для веб-старта)
  4. Экспорт XMI из ArgoUML (я не знаю, какая версия/вариант XMI является результатом, но это не тот же результат, что и вывод из BOUML. argouml-graphviz не может обрабатывать файл XMI непосредственно из BOUML).
  5. Используйте argouml-graphviz, чтобы преобразовать файл XMI, экспортированный ArgoUML, в точечный формат (возможно, вам потребуется использовать saxon вместо xsltproc, чтобы заставить его работать из-за использования XSLT2)
  6. Используйте точку или fdp или sfdp для отображения диаграммы классов.

Вот пример подходящей командной строки для использования fdp для вывода диаграммы PDF (при условии, что файл точек, сгенерированный обработкой XLST argouml-graphviz, сохранен как xmi-model.dot):

fdp -Tpdf -Gmaxiter=1000 -Gmindist=0.5 -Gpackmode=node \
  -Eweight=0.05 -Elen=1.0 -Eminlen=1.0 -Gsplines=true \
  -Goverlap=false xmi-model.dot -oxmi-model.pdf

В качестве альтернативы вы можете попробовать PHP_UML или php2xmi вместо BOUML для выполнения части "обратного инжиниринга". Я еще не пробовал это.

(Я использую фразу «реверс-инжиниринг», потому что кажется, что люди, использующие UML, используют эти слова, когда имеют в виду извлечение информации о классе и методе из исходного кода. Лично я интерпретирую эти слова как извлечение информации из исполняемого двоичного файла или захваченных необработанных данных проводки.)

Если вы предпочитаете рисовать диаграмму классов вручную (вместо использования компьютера для всего рисунка), вы можете использовать для рисования либо BOUML, либо ArgoUML. В этом случае поможет использование данных «обратного инжиниринга» через BOUML.

person Mikko Rantalainen    schedule 14.12.2011

Если вы хотите легко генерировать UML из существующих классов PHP, вы можете рассмотреть PHPStorm 3.0 IDE. Он хорошо воспроизводит существующий код в UML.

Взгляните на список функций PHP Storm.

person David Lundquist    schedule 14.12.2011
comment
Не визуализирует зависимости, только наследование. - person Basil Musa; 23.04.2017

Вы можете использовать Visual Paradigm для UML. Это может быть не самый высокооплачиваемый продукт (699 долларов США), просто как вариант, если кто-то захочет попробовать. Он может создавать диаграмму классов из PHP и наоборот, и не только PHP, есть множество языков, которые вы можете выбрать, такие как C #, C ++, Ruby, Java, VB.NET, Python, Objective C, Perl и т. д. Также есть пробная версия, которую вы можете проверить.

person O.O    schedule 07.02.2011

Теоретически вы можете использовать PhpStorm для визуализации ваших классов с использованием UML. Генерация не очень хороша, но вы можете эффективно реорганизовать материал и снова, по крайней мере, предварительно просмотреть родителей, реализации, константы, атрибуты, методы и их видимость в хорошем виде.

Ситуация

Я хочу визуализировать связь между уже существующими компонентами для коллеги.

Обработка с использованием PHPStorm

https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/

Преимущества

  • Хороший пользовательский интерфейс, окончательная диаграмма.
  • Умеет рефакторить код из диаграммы.
  • Возможность добавлять заметки.
  • Диаграмма классов красиво символизирует частные/публичные свойства, конструкторы, методы.

Недостатки

  • Нет поддержки PHP 7.
  • Больно пользоваться. Невозможно изменить размер сгенерированных блоков.
  • При добавлении нового отношения предыдущие случайно теряются :O wtf?
  • Перезапуск PhpStorm уничтожает диаграммы
  • Передумал, невозможно использовать отношения

Результат

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

Пока не используйте PhpStorm для диаграмм UML.

person Lukas Lukac    schedule 10.10.2017
comment
Я думаю, это новинка (: - person Jeffrey04; 11.10.2017
comment
Правильный. В настоящее время я нахожусь в такой же ситуации. Я разработал сложную часть системы и хочу визуализировать ее для своего коллеги. Я попробовал несколько инструментов, но они дерьмовые и уродливые :) Я собираюсь сделать это с PHPStorm и обновить свой ответ, как он выглядит и насколько он действительно мощный. Я дам вам знать сегодня результат @Jeffrey04 - person Lukas Lukac; 11.10.2017
comment
все в порядке, я не занимаюсь PHP уже довольно давно - person Jeffrey04; 13.10.2017

Ну, если честно, в первую очередь вы должны генерировать не модель UML из кода, а код из модели UML;).

Даже если вы находитесь в редкой ситуации, когда вам нужно выполнить обратный инжиниринг, обычно предлагается сделать это вручную или, по крайней мере, привести в порядок диаграммы, поскольку автоматически сгенерированный UML имеет очень плохое визуальное (=информационное) представление. значение большую часть времени.

Если вам просто нужно сгенерировать диаграммы, возможно, стоит спросить себя, почему именно? Кто является целевой аудиторией и какова цель? Что может предложить автоматически сгенерированная диаграмма, а чего нет в коде?

В основном я принимаю только один ответ на этот вопрос. Он просто стал слишком большим и непонятным.

Что опять-таки является причиной начать с UML в первую очередь, а не начинать кодирование ;) Это называется анализом, и он находится в упадке, потому что каждый второй человек в бизнесе считает, что это слишком дорого и не очень необходимо.

person trueanalysis.eu    schedule 08.07.2015
comment
Верно, но жизнь сложнее некоторых принципов, которыми разумно пользоваться. Вам может понадобиться сравнить фактический код с исходной диаграммой UML или проанализировать чей-то код или какой-то другой код, который был реализован без диаграмм UML. - person D.A.H; 21.07.2015
comment
Не согласен. Большая ценность, полученная от визуализации базы кода/модуля с помощью диаграммы. Код подобен уличным указателям, но при слишком большом количестве направлений иногда может оказаться полезной карта. - person Basil Musa; 23.04.2017
comment
Большинство программ для рисования UML имеют настолько плохой пользовательский интерфейс, что быстрее написать код и автоматически сгенерировать диаграмму UML, даже если вы затем выбросите код, который вы использовали для создания диаграммы... - person Mikko Rantalainen; 29.03.2018