PHP UML Generator [ปิด]


110

ฉันจะสร้างแผนภาพ UML ตามคลาสที่มีอยู่ใน PHP ได้อย่างไร


2
ฉันไม่ได้ทำงานกับ PHP อีกต่อไปดังนั้นฉันจึงไม่มีโค้ดที่จะทดสอบจริงๆ เมื่อฉันโพสต์สิ่งนี้ไม่มีคำตอบเริ่มต้นที่ทำได้เพียงพอ แต่มีการเปลี่ยนแปลงมากมายตั้งแต่นั้นมา ฉันทำงานกับ PHP 5.2 และตอนนี้เป็น PHP7 ในทุกวันนี้
Jeffrey04

คำตอบ:


42

นอกจากนี้ยังมีเครื่องมือ PHP UML ใช้ได้จากลูกแพร์

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


2
ด้วยเหตุผลบางอย่าง pear.com ไม่ชอบการเชื่อมโยงที่โดยไม่ต้องเฉือนท้าย: pear.php.net/package/PHP_UML
สตีเฟ่น Fuhry

1
@ สตีเฟนใช่ฉันก็สังเกตเห็นเช่นกัน! หากคุณคลิกลิงก์จะมี 404 แต่ถ้าคุณเลือกแถบที่อยู่และกด Enter ก็จะใช้งานได้
nickf

1
ไม่กี่ปีต่อมาคำสั่งคือตอนนี้pear install PHP_UML-1.6.1(ดูที่pear.php.net/package/PHP_UML/download/Allหรือpear.php.net/package/PHP_UML )
เบ็น

1
นี่ควรเป็นคำตอบที่ได้รับการยอมรับ เครื่องมือมีความงดงาม
Xofo

3
ไม่ทำงานกับ php 7
DevWL

41

ฉันขอแนะนำBOUMLซึ่ง:

  • เร็วมาก (เครื่องมือ UML ที่เร็วที่สุดเท่าที่เคยสร้างมาลองดูการวัดประสิทธิภาพ )
  • มีการสนับสนุนการนำเข้าและส่งออก PHP ที่มั่นคง(รองรับ C ++, Java, Python)
  • เป็นหลายแพลตฟอร์ม (Linux, Windows, OS อื่น ๆ ),
  • มีคุณลักษณะครบถ้วนพัฒนาอย่างน่าประทับใจ (ดูประวัติการพัฒนายากที่จะเชื่อว่าความก้าวหน้าที่รวดเร็วเช่นนี้เป็นไปได้)
  • รองรับปลั๊กอินมีสถาปัตยกรรมโมดูลาร์ (สิ่งนี้ช่วยให้ผู้ใช้มีส่วนร่วมดูเหมือนว่าชุมชน BOUML กำลังก่อตัวขึ้น)

เกณฑ์มาตรฐานดูน่าประทับใจจริงๆ ฉันรักสถาปนิกระดับองค์กร แต่ไม่มีการรองรับ PHP ฉันจะส่งต่อเครื่องมือนี้ให้ขอบคุณ
Paul Dragoonis

1
@ Paul Dragoonis Sparx ระบบองค์กร Architect ไม่ได้รับการสนับสนุน PHP - และไม่ได้เป็นคนที่เลวร้ายที่สุด
ขวาน

5
ขณะนี้หน้าเว็บของ BOUML ระบุว่า: "ข้อควรระวัง: เนื่องจากมีการละเมิดใบอนุญาตอย่างต่อเนื่องการโจมตีและการดูหมิ่นจากผู้คนใน wikipedia [... ] ฉันจึงตัดสินใจหยุดงานกับ Bouml ยกเว้นเพื่อแก้ไขข้อบกพร่อง"
MPV

1
"[18 ธันวาคม 2554] การดาวน์โหลดถูกระงับจนกว่าจะมีการแจ้งให้ทราบอีกครั้ง" จากเว็บไซต์อย่างเป็นทางการ http://bouml.free.fr/download.html - นี่เป็นเพราะฉันต้องการเวอร์ชันสำหรับ Win7 ฉันคิดว่ามันอาจยังคงมีอยู่ในที่เก็บ Ubuntu - ต้องตรวจสอบ
Val Redchenko

4
เวอร์ชัน 6.1 การปล่อยตัว23 กันยายน 2012 ปรากฏว่ามีการพัฒนาขึ้นอีกครั้ง ไม่มีการแจ้งให้ทราบล่วงหน้าเกี่ยวกับการชะลอตัวการหยุด ฯลฯbouml.fr/historic.html
Andrew Ensley

24

phUML

phUML เป็นตัวสร้างไดอะแกรมคลาส UML อัตโนมัติที่เขียนด้วย PHP ซึ่งได้รับอนุญาตภายใต้ใบอนุญาต BSD สามารถแยกวิเคราะห์ซอร์สโค้ดเชิงวัตถุ PHP5 และสร้างการแสดงภาพที่เหมาะสมของโครงสร้าง oo ตามข้อกำหนด UML

ตัวอย่าง UML

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

คำแนะนำทีละขั้นตอน


ต้องการ SVN / การโค่นล้มเพื่อดาวน์โหลดและไม่ได้บอกว่าใบอนุญาตของซอร์สโค้ดคืออะไร แต่ดูดี! ใช่ฉันจะระมัดระวังในการดูซอร์สโค้ดไม่มีใบอนุญาตอย่างแน่นอนและมีเพียง readme เดียวที่ฉันคิดว่า

ใบอนุญาตเชื่อมโยงอยู่ที่นั่นในแถบด้านข้างเว็บไซต์ของโครงการภายใต้ผู้แต่ง Creative Commons: creativecommons.org/licenses/by-nc-sa/3.0
Anthony Hatzopoulos

นั่นคือใบอนุญาตสำหรับเนื้อหาของไซต์ใบอนุญาตสำหรับโครงการจะต้องรวมอยู่ในตัวโครงการ

3
ฉันส่งอีเมลไปยังผู้เขียนจาคอบและเขาตอบกลับด้วยการอัปเดตที่เก็บพร้อมใบอนุญาต bsd 3 ข้อที่
Anthony Hatzopoulos

ฉันดาวน์โหลดสิ่งนี้และทำให้มันใช้งานได้หลังจากการซ่อมแซมเล็กน้อย ค่อนข้างดีจริงๆยกเว้นฉันไม่สามารถทำให้สมาคมทำงานได้ แต่ฉันแน่ใจว่าฉันจะเข้าใจ ดีเรียบง่าย แม้ว่าจะไม่มี GUI แต่ก็ไม่ใช่เรื่องใหญ่
Impulss

19

ที่ดีที่สุด (Windows) ซอฟต์แวร์ที่ฉันได้พบในการทำ PHP และ UML เป็นSparx ระบบ สถาปนิก Enterprise นอกจากคุณสมบัติมากมายแล้วยังรองรับPHP ต่อไปนี้ :

  • Reverse engineer object ที่มุ่งเน้น PHP ไปยังไดอะแกรมคลาส UML
  • สร้างนิยามคลาส PHP จากไดอะแกรมคลาส UML
  • ซิงโครไนซ์การเปลี่ยนแปลงที่ทำในคลาส UML เข้ากับนิยามคลาส PHP ที่สอดคล้องกัน
  • ซิงโครไนซ์การเปลี่ยนแปลงที่ทำในนิยามคลาส PHP เข้ากับคลาส UML ที่เกี่ยวข้อง
  • สร้างแผนภาพลำดับ UML เพื่อแสดงว่าคลาส PHP ใช้อะไรและใช้อย่างไร
  • จัดทำเอกสารโดยละเอียดของโค้ด PHP ของคุณในรูปแบบ RTF และ HTML มาตรฐาน
  • ดำเนินการวิศวกรรมโค้ดบนโมเดลเพื่อสร้างเพจ PHP พื้นฐาน

ไม่ฟรี (199 เหรียญ) แต่คุ้มค่ากับเงินที่เสียไป


1
ว้าวเป็นโปรแกรมที่มีประโยชน์และเป็นมืออาชีพจริงๆขอบคุณสำหรับเคล็ดลับ !! ฉันเพิ่งลองใช้แผนภาพคลาส UML ที่สร้างด้วยวิธีวิศวกรรมย้อนกลับของ Sparx EA จากซอร์สโค้ด PHP และมันใช้งานได้อย่างมีเสน่ห์ฉันตกใจว่ามันทำงานได้ดีแค่ไหน : D เนื่องจากโครงการของเรามีขนาดใหญ่ขึ้นเรื่อย ๆ และเราสร้างวัตถุมากขึ้นเรื่อย ๆ การจับตาดูโค้ดของเราเองก็ยากขึ้นเรื่อย ๆ แต่ก็ช่วยได้มากเนื่องจากสร้างไดอะแกรม UML ในทางที่ถูกต้อง (ของ แน่นอนอาจมีข้อยกเว้นเกิดขึ้น) หลังจากที่เราเขียนโค้ดเสร็จ สิ่งนี้ยังช่วยลดความสัมพันธ์ระหว่างวัตถุ
Sk8erPeter

@ax - ฉันเป็นมือใหม่และฉันหลงทางในรายการคุณสมบัติของพวกเขานิดหน่อย (ใน "เปรียบเทียบรุ่น") อะไรคือชื่อของคุณสมบัติที่ช่วยให้ฉันป้อนรหัส PHP (หรือเชื่อมโยงไปยังไฟล์ PHP) และได้รับไดอะแกรมกลับมา พยายามคิดว่าฉันอาจต้องการเวอร์ชันใด
JDelage

7

คุณลองAutodia แล้วหรือยัง? ครั้งที่แล้วฉันลองแล้วมันยังไม่สมบูรณ์แบบ แต่ก็ดีพอ


ฉันลองใช้ autodia แต่อย่างใดฉันไม่สามารถสร้างแผนภาพคลาสที่ถูกต้องได้ (php5)
Jeffrey04

7

นอกจากนี้ยังมีphp2xmi คุณต้องทำบิตของการทำงานด้วยตนเอง แต่จะสร้างชั้นเรียนทั้งหมดดังนั้นสิ่งที่คุณต้องทำคือการลากลง classdiagram ในUmbrello

มิฉะนั้นการสร้างแผนภาพโดยใช้การสะท้อนและกราฟวิซนั้นค่อนข้างง่าย ฉันมีข้อมูลโค้ดตรงนี้ซึ่งคุณสามารถใช้เป็นจุดเริ่มต้นได้


7

นี่คือวิธีที่ฉันทำ (จากโค้ดเป็นรูปวาด PDF โดยตรงโดยไม่ต้องวาดอะไรด้วยตนเอง):

  1. ใช้BOUMLสำหรับ "วิศวกรรมย้อนกลับโค้ด PHP" [sic] เพื่อแยกโมเดลคลาส (BOUML มีให้จากที่เก็บ "universe" ของ Ubuntu) ฉันแนะนำ BOUML อย่างจริงจังสำหรับขั้นตอนนี้เพราะมันเร็วมากเมื่อเทียบกับโปรแกรมอื่น ๆ ที่ฉันเคยลอง นอกจากนี้ดูเหมือนว่า BOUML จะแยกโมเดลอย่างถูกต้อง (สำหรับชิ้นส่วนที่ BOUML พยายามดึงข้อมูลออกมา)
  2. ใช้ BOUML เพื่อส่งออกโมเดลเป็นไฟล์ XMI 1.4
  3. ใช้ArgoUMLเพื่อนำเข้าไฟล์ XMI ดังกล่าว (คุณสามารถใช้เวอร์ชัน webstart สำหรับขั้นตอนนี้)
  4. เอ็กซ์พอร์ต XMI จาก ArgoUML (ฉันไม่รู้ว่าเอาต์พุต XMI เวอร์ชัน / ตัวแปรใดเป็นผลลัพธ์ แต่ไม่ใช่ผลลัพธ์เดียวกันกับเอาต์พุตจาก BOUML argouml-graphviz ไม่สามารถจัดการไฟล์ XMI โดยตรงจาก BOUML)
  5. ใช้argouml-graphvizเพื่อแปลงไฟล์ XMI ที่ส่งออก ArgoUML เป็นรูปแบบ dot (คุณอาจต้องใช้saxonแทน xsltproc เพื่อให้ทำงานได้เนื่องจากใช้ XSLT2)
  6. ใช้จุดหรือFDPหรือsfdpเพื่อแสดงแผนภาพชั้นเรียน

นี่คือตัวอย่างของบรรทัดคำสั่งที่เหมาะสมสำหรับการใช้ fdp เพื่อแสดงไดอะแกรม PDF (สมมติว่าไฟล์ dot ที่สร้างโดยการประมวลผล argouml-graphviz XLST จะถูกบันทึกเป็น 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 จะช่วยในกรณีนั้น


5

หากคุณต้องการสร้าง UML อย่างง่ายดายจากคลาส PHP ที่มีอยู่คุณอาจต้องการพิจารณา PHPStorm 3.0 IDE มันทำงานได้ดีในการจำลองโค้ดที่มีอยู่ลงใน UML

มีลักษณะที่เป็นPHP พายุรายการคุณลักษณะ


2
ไม่เห็นภาพการอ้างอิงเป็นเพียงการสืบทอด
Basil Musa

1

คุณสามารถใช้ Visual Paradigm สำหรับ UML นี่อาจไม่ใช่ผลิตภัณฑ์ที่จ่ายเงินดีที่สุด (ราคา 699 เหรียญสหรัฐ) เป็นตัวเลือกหากใครอยากลอง สามารถสร้างคลาสไดอะแกรมจาก PHP และในทางกลับกันและไม่เพียง แต่ PHP เท่านั้นยังมีภาษามากมายให้คุณเลือกเช่น C #, C ++, Ruby, Java, VB.NET, Python, Objective C, Perl และอื่น ๆ นอกจากนี้ยังมี ทดลองใช้คุณสามารถตรวจสอบได้


1

ในทางทฤษฎีคุณสามารถใช้ PhpStorm เพื่อแสดงภาพชั้นเรียนของคุณโดยใช้ UML คนรุ่นนี้ไม่ได้ยอดเยี่ยมมากนัก แต่คุณสามารถ refactor สิ่งต่างๆได้อย่างมีประสิทธิภาพและอีกครั้งอย่างน้อยก็ดูตัวอย่างผู้ปกครองการนำไปใช้งานค่าคงที่คุณลักษณะวิธีการและการมองเห็นของพวกเขาในทางที่ดี

สถานการณ์

ฉันต้องการเห็นภาพการสื่อสารระหว่างส่วนประกอบที่มีอยู่แล้วกับเพื่อนร่วมงาน

กระบวนการโดยใช้ PHPStorm

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

ข้อดี

  • UI ที่ดีแผนภาพสุดท้าย
  • สามารถ refactor รหัสจากแผนภาพ
  • สามารถเพิ่มบันทึก
  • แผนภาพคลาสเป็นสัญลักษณ์ของคุณสมบัติส่วนตัว / สาธารณะตัวสร้างวิธีการอย่างดี

ข้อเสีย

  • ไม่รองรับ PHP 7
  • ใช้อย่างเจ็บปวด ไม่สามารถปรับขนาดกล่องที่สร้างขึ้น
  • เมื่อเพิ่มความสัมพันธ์ใหม่ความสัมพันธ์ก่อนหน้านี้จะหายไปแบบสุ่ม: O wtf?
  • การรีสตาร์ท PhpStorm จะทำลายไดอะแกรม
  • เปลี่ยนใจไม่ใช้ความสัมพันธ์

ผลลัพธ์

อย่างไรก็ตามหลังจากทำงานหนักมาหลายชั่วโมงฉันก็สามารถสร้างกล่องที่ไม่เกี่ยวข้องได้เท่านั้นและต้องใช้โปรแกรมเพิ่มเติมเพื่อเชื่อมโยงความสัมพันธ์ เลวจริงๆ. แต่ฉันเชื่อว่าเมื่อพวกเขาทำให้มันทำงานได้อย่างถูกต้องมันจะเป็นคุณสมบัติที่ยอดเยี่ยมเพราะเมื่อโค้ดเปลี่ยนไปไดอะแกรมจะได้รับการอัปเดตโดยอัตโนมัติ!

ตอนนี้อย่าใช้ PhpStorm สำหรับไดอะแกรม UML


ฉันคิดว่านี่เป็นเรื่องใหม่ (:
Jeffrey04

แก้ไข. ตอนนี้ฉันตกอยู่ในสถานการณ์เดียวกัน ฉันพัฒนาส่วนที่ซับซ้อนของระบบและต้องการให้เพื่อนร่วมงานเห็นภาพ ฉันลองใช้เครื่องมือหลายอย่าง แต่มันห่วยและน่าเกลียด :) ฉันจะทำด้วย PHPStorm และอัปเดตคำตอบของฉันว่ามันเป็นอย่างไรและมีประสิทธิภาพเพียงใด วันนี้ฉันจะแจ้งให้คุณทราบผล @ Jeffrey04
Lukas Lukac

ไม่เป็นไรฉันไม่ได้ทำ PHP มาระยะหนึ่งแล้วจริงๆ
Jeffrey04

0

พูดตามตรงก่อนอื่นคุณไม่ควรสร้างโมเดล UML จากโค้ด แต่เป็นรหัสจากโมเดล UML;)

แม้ว่าคุณจะอยู่ในสถานการณ์ที่หายาก แต่เมื่อคุณต้องทำวิศวกรรมย้อนกลับนี้โดยทั่วไปแนะนำให้คุณทำด้วยมือหรืออย่างน้อยก็ทำให้ไดอะแกรมเป็นระเบียบเนื่องจาก UML ที่สร้างขึ้นโดยอัตโนมัติมีภาพที่ไม่ดีจริงๆ (= ข้อมูล) ให้ความสำคัญกับเวลาส่วนใหญ่

หากคุณต้องการสร้างไดอะแกรมอาจเป็นเรื่องดีที่จะถามตัวเองว่าทำไม? ใครคือกลุ่มเป้าหมายและเป้าหมายคืออะไร แผนภาพที่สร้างขึ้นโดยอัตโนมัติมีข้อเสนออะไรไม่มีรหัสอะไร

โดยพื้นฐานแล้วฉันยอมรับเพียงคำตอบเดียวสำหรับคำถามนั้น มันใหญ่เกินไปและไม่สามารถเข้าใจได้

ซึ่งเป็นเหตุผลในการเริ่มต้นด้วย UML ในตอนแรกซึ่งต่างจากการเริ่มเขียนโค้ด;) เรียกว่าการวิเคราะห์และกำลังลดลงเพราะทุก ๆ วินาทีในธุรกิจคิดว่ามันแพงเกินไปและไม่จำเป็นจริงๆ


7
จริงอยู่ แต่ชีวิตซับซ้อนกว่าหลักการบางอย่างซึ่งควรใช้ คุณอาจต้องเปรียบเทียบโค้ดจริงกับไดอะแกรม UML ดั้งเดิมหรือวิเคราะห์โค้ด someones หรือโค้ดบางโค้ดซึ่งติดตั้งโดยไม่มีไดอะแกรม UML
DAH

3
ไม่เห็นด้วย. คุณค่าที่ได้รับจากการแสดงโค้ดฐาน / โมดูลด้วยแผนภาพ รหัสเป็นเหมือนเส้นทางถนน แต่บางครั้งอาจมีเส้นทางที่มีประโยชน์มากเกินไป
Basil Musa

1
โปรแกรมวาดรูป UML ส่วนใหญ่มี UI ที่ไม่ดีทำให้เขียนโค้ดและสร้างแผนภาพ UML โดยอัตโนมัติได้เร็วขึ้นแม้ว่าคุณจะทิ้งโค้ดที่ใช้สร้างไดอะแกรมไปแล้วก็ตาม ...
ก็ตาม Mikko Rantalainen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.