2008-11-25 9 views
5

Für unser Schulprojekt haben wir die Aufgabe, ein Designdokument zu erstellen, das die Architektur einer PHP-Anwendung beschreibt.Objektorientiertes Design für PHP-Anwendung

Wir sind frei entscheiden, was in das Dokument aufzunehmen.

Unser Professor schlug vor, viele (UML) Diagramme.

Er bat uns auch, Klassendiagramme zu betrachten, aber Vorsicht, da PHP nicht vollständig objektorientiert ist.

Meine Frage: Ist ein Domain Driven Object Oriented Design für eine PHP-Anwendung machbar? Was ist bei OO in PHP zu beachten? Was sind die Vor- und Nachteile? Irgendwelche hilfreiche Ressourcen zu OO in PHP und PHP Best Practices?

Antwort

9

IMHO ist es ziemlich schwierig, die Architektur einer Anwendung zu beschreiben, ohne zu wissen, was die Anwendung tun soll. Alle Anwendungen (PHP oder andere) beliebiger Komplexität sehen anders aus.

Zweitens, PHP5 gibt Ihnen Klassen/Objekte und die übliche Fülle von OO Gubbings - so zu beschreiben, wie 'nicht vollständig objektorientiert' ist irreführend denke ich. Wenn Sie meinen, dass Sie einen prozeduralen Ansatz verfolgen können, ohne auf Objekte beschränkt zu sein, dann ja, aber wenn Sie wollten, dass alles ein Objekt ist, dann ist das Ihre Wahl.

Ist DDD für PHP möglich? Ja, sicher. Ein bestimmter Ansatz für die Architektur hängt normalerweise nicht von der Technologie ab. Best Practices, Pro/Contra-OO-Design gelten für die meisten Sprachen - PHP lässt Ihnen ziemlich frei, wie Sie Ihren Code strukturieren.)

2

PHP können heute beschrieben als vollständig durch Wahl objektorientiert;

Sie können diese Best Practices reden von der PHP-Website nützlich finden. Es bietet alles, was Sie brauchen, aber Sie sind nicht gezwungen, OO-Code zu schreiben.

Es gibt zwei Bücher, die mir das Verständnis der OO Prinzipien in Bezug auf PHP sehr geholfen:

  • PHP in Aktion (Manning)
  • Zend Study Guide für PHP5 (Zend)
2

Die meisten derzeit verwendeten OO-Sprachen sind nicht vollständig objektorientiert. Jede Sprache hat Idiosynkrasien und Fallstricke. Also ich würde sagen, PHP ist OO genug für die meisten einfachen Projekte. Ich habe am Zend Framework gearbeitet, das als OO Klassenbibliothek mit Designmustern und ähnlichem entworfen wurde.

Ein Vorschlag für PHP ist, dass Sie auf seine SPL Komponente achten sollten, die Ihnen Schnittstellen für viele grundlegende Klassen gibt.

Ich denke, es ist ziemlich schwach, wenn Ihr Lehrer sagte, "setzen Sie alles, was Sie wollen, in das Design-Dokument, UML-Diagramme sind hübsch." Design-Dokumentation ist ein wichtiger, aber unterschätzter Teil des Software-Engineerings. Ihr Lehrer sollte Ihnen Beispiele oder Vorlagen für gutes Designdokument zeigen.

0

OO ist in erster Linie eine Designmethodik.

Als solche ist es möglich, mit einem OO-Design zu kommen, das in procedural langauges implemented werden kann. Ich habe das für C- und COBOL-Projekte gesehen. Und es hat mich davon überzeugt, dass fast alle Vorteile von OO mit Design und NOT Sprachimplementation zu tun haben.

Also können Sie sich ein OO Design mit viel UML (Klassendiagramme, Use Cases, Swim Lanes etc.) einfallen lassen und es in PHP implementieren (mit Klassen oder nicht).

Wie auch immer PHP ist effektiv eine Obermenge von OO also, wenn Sie sich auf Klassen und Funktionen innerhalb von Klassen (== Methoden) beschränken, haben Sie eine OO-Implementierung.

Das einzige, was fehlt werden Interface-Definitionen sein, aber es macht sehr wenig sinnvoll, Schnittstellen in einer Sprache mit solchen (un) begrenzten Typprüfungen zu definieren.

Verwandte Themen