PHP UML Üreticisi [kapalı]


110

PHP'deki mevcut sınıflara dayalı olarak nasıl UML diyagramı oluşturabilirim?


2
Artık PHP ile çalışmıyorum, bu yüzden gerçekten test etmek için kodum yok. Bunu yayınladığımda ilk yanıtların hiçbiri yeterli gelmiyordu, ancak o zamandan beri çok şey değişti. PHP 5.2 ile çalışıyordum ve bu günlerde artık PHP7.
Jeffrey04

Yanıtlar:


42

Edinilebilir PHP UML aracı da var armut .

PHP_UML:

  • Sürüm 1.4 veya sürüm 2.1'de (mantıksal, bileşen ve dağıtım görünümleri) UML / XMI dosyaları oluşturabilir
  • HTML biçiminde bir API dokümantasyonu oluşturabilir
  • Belirli bir XMI dosyasından PHP kodu (kod iskeleti) oluşturabilir
  • UML / XMI içeriğini sürüm 1.4'ten sürüm 2.1'e dönüştürebilir

Komut satırına şu yolla yükleyin:

$ pear install pear/php_uml

(Bu eskiden $ pear install pear/php_uml-alphaöyleydi, ancak paket o zamandan beri kararlı hale geldi.)

Xmi'nizi oluşturun:

$ phpuml -o project.xmi


2
nedense, pear.com bir sondaki kesme işareti olmadan bu bağlantı gibi değil: pear.php.net/package/PHP_UML
Stephen Fuhry

1
@Stephen, evet bunu ben de fark ettim! Bağlantıya tıklarsanız size bir 404 verir, ancak adres çubuğunu seçip enter tuşuna basarsanız çalışır.
nickf

1
Birkaç yıl sonra komut şimdi geldi pear install PHP_UML-1.6.1(bkz. Pear.php.net/package/PHP_UML/download/All veya pear.php.net/package/PHP_UML )
Ben

1
Kabul edilen cevap bu olmalıdır. Araç muhteşem.
Xofo

3
php 7 ile çalışmıyor
DevWL

41

BOUML'u şiddetle tavsiye ederim :

  • son derece hızlıdır (şimdiye kadar oluşturulmuş en hızlı UML aracı, karşılaştırmaları kontrol edin ),
  • çok sağlam PHP içe ve dışa aktarma desteğine sahiptir (ayrıca C ++, Java, Python'u destekler)
  • çoklu platformdur (Linux, Windows, diğer işletim sistemleri),
  • tam özelliklidir, etkileyici bir şekilde yoğun bir şekilde geliştirilmiştir ( geliştirme geçmişine bakın , bu kadar hızlı ilerlemenin mümkün olduğuna inanmak zor).
  • eklentileri destekler, modüler mimariye sahiptir (bu, kullanıcı katkılarına izin verir , BOUML topluluğu oluşuyormuş gibi görünür)

Kriterler gerçekten etkileyici görünüyor. Kurumsal mimarları seviyorum ama PHP desteği yok. Bu aracı vereceğim, teşekkürler.
Paul Dragoonis

1
@Paul Dragoonis Sparx Systems Enterprise Architect , PHP desteğine sahip - en kötüsü değil .
balta.

5
BOUML web sayfası şu anda şunu belirtiyor: "DİKKAT: Wikipedia [...] insanlarının sürekli lisans ihlalleri, saldırıları ve hakaretleri nedeniyle, hataları düzeltmek dışında Bouml üzerindeki çalışmayı durdurmaya karar verdim."
MPV

1
Resmi web sitelerinden "[Aralık 18, 2011] İndirmeler bir sonraki duyuruya kadar askıya alındı". http://bouml.free.fr/download.html - bunun nedeni Win7 için bir sürüme ihtiyacım olmasıydı. Hala Ubuntu depolarında bulunabileceğini hayal ediyorum - kontrol
etmem

4
Versiyon 6.1 23 Eylül 2012'de yayınlandı . Görünüşe göre gelişme yeniden toparlandı. Yavaşlama, durma vb. Hakkında
Andrew Ensley

24

phUML

phUML, PHP ile yazılmış, BSD lisansı altında lisanslanmış, tam otomatik UML sınıfı diyagram üretecidir. Herhangi bir PHP5 nesnesine yönelik kaynak kodunu ayrıştırabilir ve UML belirtimine bağlı olarak oo yapısının uygun bir görüntü temsilini oluşturabilir.

UML Örneği

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

Adım adım rehber


İndirmek için SVN / subversion gerektirir ve kaynak kodun lisansının ne olduğunu gerçekten söylemiyor, ancak iyi görünüyor! yah Kaynak koduna bakarken dikkatli olurdum, üzerinde kesinlikle lisans yok ve bence tek benioku sitede

Lisans, projenin web sitesi kenar çubuğunda, yazar Creative Commons: creativecommons.org/licenses/by-nc-sa/3.0
Anthony Hatzopoulos

bu sitenin içeriğinin lisansıdır, projenin LİSANSI projenin kendisine dahil edilmelidir .

3
Yazara bir e-posta gönderdim, Jakob ve o depoda bir güncelleme ile yanıt verdi ve 3 maddeli bsd Lisansı
Anthony Hatzopoulos

Bunu indirdim ve biraz tamirden sonra çalışmasını sağladım. Gerçekten çok güzeldi, ancak dernekleri çalıştıramıyorum, ama eminim çözeceğim. Güzel, basit. Yine de GUI yok, ama o kadar da önemli değil.
Impulss

19

PHP ve UML için bulduğum en iyi (Windows) yazılım Sparx Systems Enterprise Architect . pek çok özelliğin yanı sıra , PHP için aşağıdakileri de destekler :

  • Nesne yönelimli PHP'yi UML sınıf diyagramlarına ters çevirme
  • UML sınıf diyagramlarından PHP sınıf tanımları oluşturun
  • Bir UML sınıfında yapılan değişiklikleri karşılık gelen PHP sınıfı tanımıyla senkronize edin
  • Bir PHP sınıfı tanımında yapılan değişiklikleri karşılık gelen UML sınıfıyla senkronize edin
  • PHP sınıflarının ne kullandığını ve nasıl kullanıldığını göstermek için UML sıra diyagramları oluşturun
  • PHP kodunuzun ayrıntılı belgelerini standart RTF ve HTML biçiminde oluşturun
  • Temel PHP sayfaları oluşturmak için modellerde kod mühendisliği gerçekleştirin.

ücretsiz değil (199 $), ama kesinlikle paraya değer.


1
Vay canına, bu gerçekten faydalı ve profesyonel bir program, bahşiş için teşekkürler !! Sparx EA'nın PHP kaynak kodundan tersine mühendislik yöntemiyle üretilen UML sınıf diyagramını denedim ve bir cazibe gibi çalıştı, bunun ne kadar iyi çalıştığına şaşırdım. : D Projelerimiz büyüdükçe ve büyüdükçe ve giderek daha fazla nesne yarattıkça, kendi kodumuza göz kulak olmak gittikçe zorlaşıyor, ancak UML diyagramlarını doğru şekilde oluşturduğundan tabii, istisnalar olabilir) Kodu bitirdikten SONRA. Bu, nesneler arasındaki ilişkileri basitleştirmeye bile yardımcı olur.
Sk8erPeter

@ax - Ben bir acemiyim ve özellikler listesinde biraz kayboluyorum ("sürümleri karşılaştır" altında). PHP kodunu girmeme (veya PHP dosyalarına bağlanmama) ve karşılığında bir diyagram almamı sağlayan özelliğin adı ne olabilir? Hangi sürüme ihtiyacım olabileceğini anlamaya çalışıyorum.
JDelage


7

Ayrıca php2xmi var . Biraz manuel çalışma yapmanız gerekir, ancak bu tüm sınıfları oluşturur, bu nedenle tek yapmanız gereken onları Umbrello'daki bir sınıf diyagramına sürüklemektir .

Aksi takdirde, yansıma ve grafik kullanımıyla bir diyagram oluşturmak oldukça basittir. Ben pasaj olmasını buraya bir başlangıç noktası olarak kullanabileceğiniz,.


7

İşte bunu nasıl yaptım (herhangi bir şeyi manuel olarak çizmeden doğrudan koddan PDF çizimine):

  1. Kullanım BOUML "ters mühendislik PHP kodu" için (BOUML Ubuntu'nun "evrenin" deposundan mevcuttur) sınıfı modeli çıkarmak için [sic]. Bu adım için BOUML'u ciddiye alıyorum çünkü denediğim diğer birçok programla karşılaştırıldığında gerçekten hızlı. Ek olarak, BOUML'un modeli doğru bir şekilde çıkarmış gibi göründüğü görülmektedir (BOUML'un bile çıkarmaya çalıştığı parçalar için).
  2. Modeli XMI 1.4 dosyası olarak dışa aktarmak için BOUML kullanın
  3. Söz konusu XMI dosyasını içe aktarmak için ArgoUML'yi kullanın (bu adım için web başlatma sürümünü kullanabilirsiniz)
  4. XMI'yi ArgoUML'den dışa aktarın (çıktının hangi XMI sürümü / varyantı olduğunu bilmiyorum, ancak BOUML'dan gelen çıktıyla aynı sonuç değil. Argouml-graphviz, XMI dosyasını doğrudan BOUML'den işleyemez).
  5. Kullanım ArgoUML-graphviz ArgoUML formatını nokta için XMI dosyayı farklı dönüştürmek için (Kullanım gerekebilir saxon o XSLT2 kullanımı nedeniyle işe almak yerine xsltproc arasında)
  6. Kullanım nokta veya fdp veya sfdp sınıf diyagramı işlemek için.

PDF diyagramının çıktısını almak için fdp kullanmak için uygun bir komut satırı örneği (argouml-graphviz XLST işleme tarafından oluşturulan nokta dosyasının xmi-model.dot olarak kaydedildiğini varsayarak):

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

Alternatif olarak , "tersine mühendislik" bölümünü yapmak için BOUML yerine PHP_UML veya php2xmi'yi deneyebilirsiniz . Bunu henüz denemedim.

("Tersine mühendislik" ifadesini kullanıyorum, çünkü UML çalışanları bu kelimeleri kaynak koddan sınıf ve yöntem bilgilerini ayıklamak istediklerinde kullanıyorlar. Bu kelimeleri kişisel olarak yürütülebilir ikili dosyadan veya ham tel verileri.)

Sınıf diyagramını elle çizmeyi tercih ederseniz (tüm çizimi bilgisayar kullanmak yerine), çizim için BOUML veya ArgoUML kullanabilirsiniz. BOUML aracılığıyla "ters mühendislik" verilerinin kullanılması bu durumda yardımcı olacaktır.


5

Mevcut PHP Sınıflarınızdan kolayca UML oluşturmak istiyorsanız, PHPStorm 3.0 IDE'yi düşünmek isteyebilirsiniz. Mevcut kodu UML'ye kopyalamak için iyi bir iş çıkarır.

PHP Storm özellik listesine bir göz atın .


2
Bağımlılıkları görselleştirmez, yalnızca kalıtım.
Basil Musa

1

UML için Visual Paradigm'i kullanabilirsiniz. Bu, denemek isteyen varsa, en iyi ödenen (699 ABD Doları) ürün olmayabilir. PHP'den sınıf diyagramı oluşturabilir ve bunun tersi de yapılabilir ve sadece PHP değil, C #, C ++, Ruby, Java, VB.NET, Python, Objective C, Perl, vb. Gibi seçebileceğiniz bir sürü dil vardır. deneme kontrol edebilirsiniz.


1

Teoride, sınıflarınızı UML kullanarak görselleştirmek için PhpStorm'u kullanabilirsiniz. Nesil gerçekten harika değil, ancak en azından ebeveynleri, uygulamaları, sabitleri, nitelikleri, yöntemleri ve görünürlüğünü güzel bir şekilde önizleyebilirsiniz.

Durum

Bir meslektaşım ile halihazırda var olan bileşenler arasındaki iletişimi görselleştirmek istiyorum.

PHPStorm kullanarak işlem

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

Avantajları

  • Güzel kullanıcı arayüzü, son diyagram.
  • Bir diyagramdan kodu yeniden düzenleyebilir.
  • Not ekleyebilir.
  • Sınıf diyagramı özel / genel özellikleri, yapıcıları, yöntemleri güzel bir şekilde sembolize eder.

Dezavantajları

  • PHP 7 desteği yok.
  • Acı verici bir şekilde kullanmak. Oluşturulan kutular yeniden boyutlandırılamıyor.
  • Yeni bir ilişki eklerken, öncekiler rastgele kaybolur: O wtf?
  • PhpStorm'u yeniden başlatmak diyagramları yok eder
  • Fikrimi değiştirdim, ilişkileri kullanmak imkansız

Sonuç

Her neyse, zahmetli bir çalışma saatinden sonra yalnızca ilgisiz kutular üretebildim ve ilişkileri bağlamak için ek program kullanmak zorunda kaldım. Gerçekten kötü. Ancak, düzgün çalışmasını sağladıklarında bunun harika bir özellik olacağına inanıyorum çünkü kod değiştikçe diyagramlar otomatik olarak güncellenecektir!

Şimdilik, UML diyagramları için PhpStorm'u kullanmayın.


Sanırım bu yeni (:
Jeffrey04

Doğru. Şu anda aynı durumdayım. Bir sistemin karmaşık bir parçasını geliştirdim ve bunu meslektaşım için görselleştirmek istiyorum. Birkaç araç denedim ama boktan ve çirkin :) Bunu PHPStorm ile yapacağım ve cevabımı nasıl göründüğünü ve ne kadar güçlü olduğunu güncelleyeceğim. Bugün sonucu size bildireceğim @ Jeffrey04
Lukas Lukac

sorun değil, aslında oldukça uzun süredir PHP yapmıyorum
Jeffrey04

0

Dürüst olmak gerekirse, her şeyden önce koddan UML modelini değil, UML modelinden kod üretmelisiniz;).

Nadir bir durumda olsanız bile, bu tersine mühendisliği yapmanız gerektiğinde, genellikle elle yapmanız veya en azından diyagramları düzeltmeniz önerilir, çünkü otomatik olarak oluşturulan UML gerçekten zayıf bir görselliğe sahiptir (= bilgi) çoğu zaman değer verir.

Sadece diyagramları oluşturmanız gerekiyorsa, kendinize tam olarak neden diye sormanız muhtemelen iyi bir şeydir. Hedef kitle kimdir ve amaç nedir? Otomatik oluşturulan diyagramın sunması gereken, kodun sunmadığı nedir?

Temel olarak bu soruya sadece bir cevabı kabul ediyorum. Sadece çok büyük ve anlaşılmaz hale geldi.

Kodlamaya başlamak yerine yine ilk etapta UML ile başlamak için bir neden;) Buna analiz deniyor ve düşüşte, çünkü iş dünyasındaki her iki adam bunun biraz fazla pahalı ve gerçekten gerekli olmadığını düşünüyor.


7
Doğru, ama hayat, kullanımı akıllıca olan bazı ilkelerden daha karmaşıktır. Gerçek kodu orijinal UML diyagramıyla karşılaştırmanız veya birilerinin kodunu veya UML diyagramları olmadan uygulanan bazı kodları analiz etmeniz gerekebilir.
DAH

3
Katılmıyorum. Bir kod tabanını / modülünü bir diyagramla görselleştirmekten büyük değer kazanılır. Kod sokak tarifleri gibidir, ancak çok fazla yön olduğunda bazen bir harita yararlı olabilir.
Basil Musa

1
Çoğu UML çizim programı o kadar kötü bir kullanıcı arayüzüne sahiptir ki , diyagramı oluşturmak için kullandığınız kodu atsanız bile, kodu yazmak ve UML diyagramını otomatik olarak oluşturmak daha hızlıdır ...
Mikko Rantalainen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.