Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Struktura projektu - model
Forum PHP.pl > Forum > PHP > Frameworki
ptr0x0000
Witam, jestem nowy na forum. Chciałbym zapytać bardziej doświadczonych programistów jak należy przygotować struktrurę projektu? Zależy mi na prostocie rozbudowy projektu w przyszłości oraz prostoty zrozumienia przez innych programistów. Największy problem mam z modelem. W chwili obecnej posiadam dla każdej tabli bazy danych klasę (rozszeżającą Zend_Db_Table_Abstract) oraz klase reprezentującą wiersz poszczególnej tabeli oraz klasę typu Mapper - zgodnie z tym poradnikiem http://framework.zend.com/manual/en/learni...eate-model.html. Stworzyłem osobny moduł, który w przyszłości będzie odpowiadał za zarządzanie danymi (dodwanie/edycja/itd.) - panel administracyjny. W module tym stworzyłem osobny model dla kazdego kontrolera (zgodnie z zasadą Skinny Controller, Fat Model).
Moje pytania to:
1. Czy warto przenieść klasy modelu związane bezpośredio z bazą danych do osobnego modułu- który zawieralby tylko model bez kontrolerów, akcji i widoków?
2. Czy zamiast powyższego rozwiązania lepiej zastosować podział na katalogi w katalogu modelu (domyślnego modułu) - jak sobie z tym poradzić w Zendzie?

Prosiłbym również o luźne rady związane z konwencją nazw dla klas (głownie chodzi mi o postfix dla klas modelu zawierających logikę biznesową)?

Pozdrawaim.

ps Mile widziane również wszystkie porady związane z architekturą/projektowaniem aplikacji opartych o Zenda Lkingsmiley.png
doman78
Wiesz, każdy projekt ma odrębną strukturę i jak to bywa w życiu wszystko jest względne. Moim zdaniem przy organizacji struktury najważniejsze są pytania:
- czy chcesz projekt podzielić na moduły
- czy chcesz część kodu wykorzystać kiedyś

W pierwszym przypadku struktura zostaje w pewien sposób narzucona (ze względu na same moduły smile.gif
W drugim musisz ostrożnie pisać modele.

Jeżeli chodzi o tablice to też wszystko zależy. Z jednej strony opłaca się budować klasy-tablice z drugiej strony możesz czuć się pewniej wykorzystując Doctrine i wtedy już jest inne podejście do tematu.

A teraz odnosząc się do Twoich pytań:
ad 1. Moim zdaniem nie ma to sensu bo zwykle nie zależnie od modułu będziesz chciał wykorzystać bazy danych. Chyba, że nie zrozumiałem pytania.
ad 2. Czy chodzi Tobie o DbTable? Jeśli tak to trzymasz je w modelach. Co do postfixów to raczej zależy to tylko i wyłącznie od Ciebie jak chcesz nazwać pliki...

Pozdrawiam,
ptr0x0000
Dziękuje za odpowiedź. Obecnie wykorzystuje tylko Zenda. O Doctrine nie myślałem (poczytam o nim). Projekt będzie dzielony na moduły. Precyzując mój problem, głownie chodzi o to, że mam wiele plików (z których każdy zawiera jedną klasę) w katalogu models w module głównym. Chciałbym je uporządkować - obecnie tylko klasy dziedziczące po DbTable są w osobnym katalogu, natomiast pozostałe klasy (reprezentujące wiersze tabel i mappery) znajdują się bezpośrednio w katalogu models. Zakładam, że większość aplikacji będzie umieszczona w odpowiednich modułach, jednak w module domyślnym też prawdopodobnie znajdzie się funkcjonalność wspólna dla wszystkich modułów (obecnie jest to jeden kontroler odpowiadający za autoryzację użytkowników oraz model dostarczający mu funkcjonalność). Podsumowując, chciałbym oddzielić część modelu (np. wydzielić do podkatalogu) odpowiedzialną za strukturę bazy danych oraz obiekty bezpośrednio na niej operujące od modelu zawierającego klasy tzw. logiki biznesowej. Moje pytanie brzmi jak to się zwykle robi w Zendzie? Nie chciałbym tego robić "po swojemu" ponieważ, nie otwiera się już otwartych drzwi smile.gif

Jeszcze raz dziękuje za odpowiedź i pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.