2008-11-25 15 views
5

W naszym szkolnym projekcie mamy za zadanie zdefiniowanie dokumentu projektowego opisującego architekturę aplikacji PHP.Projektowanie zorientowane obiektowo dla aplikacji PHP

Jesteśmy wolni, aby zdecydować, co uwzględnić w dokumencie.

Nasz profesor zasugerował wiele diagramów (UML).

Poprosił nas również o rozważenie diagramów klas, ale z ostrożnością, ponieważ PHP nie jest w pełni obiektowe.

Moje pytanie: Czy możliwe jest projektowanie zorientowane obiektowo na aplikacje PHP? Co wziąć pod uwagę podczas wykonywania OO w PHP? Jakie są pro i con's? Jakiekolwiek pomocne zasoby na temat OO w najlepszych praktykach PHP i PHP?

Odpowiedz

9

IMHO jest dość trudno opisać architekturę dowolnej aplikacji, nie wiedząc, co aplikacja ma robić. Wszystkie aplikacje (PHP lub inne) o dowolnej złożoności wyglądają inaczej.

Po drugie, PHP5 daje klasy/obiekty i zwykłą mnogość gafli OO - tak więc opisanie go jako "nie w pełni zorientowanego na obiekt" jest mylące. Jeśli masz na myśli, że możesz zastosować podejście proceduralne bez ograniczania się do obiektów, to tak, ale jeśli chcesz, aby wszystko było obiektem, to twój wybór.

Czy DDD jest wykonalne dla PHP? Tak oczywiście. Szczególne podejście do architektury zwykle nie zależy od technologii. Najlepsze praktyki, plusy/minusy projektowania OO odnoszą się do większości języków - PHP pozostawia ci swobodę decydowania o tym, jak zorganizować swój kod.

można znaleźć ten Best Practices rozmowę z witryny PHP użyteczny;)

2

PHP można obecnie określić jako w pełni obiektowego z wyboru. Oferuje wszystko, czego potrzebujesz, ale nie musisz pisać kodu OO.

Istnieją dwie książki, które bardzo mi pomogły w zrozumieniu zasad oo w stosunku do PHP:

  • PHP w Akcji (Manning)
  • Zend Study Guide dla PHP5 (Zend)
2

Większość używanych obecnie języków OO nie jest w pełni obiektowych. Każdy język ma idiosynkrazje i gotyki. Powiedziałbym, że PHP jest wystarczającym narzędziem dla większości prostych projektów. Pracowałem nad Zend Framework, który został zaprojektowany jako biblioteka klasy OO, z wzorami projektowymi i innymi.

Jedną z sugestii dla PHP jest zwrócenie uwagi na jego komponent SPL, który zapewnia interfejsy dla wielu podstawowych klas.

Myślę, że to bardzo słabe, jeśli twój nauczyciel powiedział: "umieść wszystko, co chcesz w dokumencie projektu, diagramy UML są ładne". Dokumentacja projektowa jest ważnym, ale zdecydowanie niedocenianym elementem inżynierii oprogramowania. Twój nauczyciel powinien pokazywać Ci przykłady lub szablony dla dobrego projektu dokumentu.

0

OO to przede wszystkim metoda projektowania.

Jako taki można zaproponować projekt OO, który można implikować w języku proceduralnym. Widziałem to zrobić dla projektów C i COBOL. I przekonałem mnie, że prawie wszystkie zalety OO mają związek z projektowaniem, a nie z językową impedancją.

Tak, możesz wymyślić projekt OO z dużą ilością UML (diagramy klas, przypadki użycia, tory pływackie itp.) I możesz go zaimplementować w php (używając klas lub nie).

W każdym razie php jest faktycznie nadzbiorem OO, więc jeśli ograniczysz się do klas i funkcji wewnątrz klas (== metody) masz implementację OO.

Jedyne czego brakuje to definicje interfejsów, ale bardzo mało sensowne jest definiowanie interfejsów w języku z taką (nie) ograniczoną kontrolą typów.

Powiązane problemy