![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 8.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam, przygotowałem model zgodnie z http://framework.zend.com/manual/en/learni...eate-model.html Gdzie należy umieścić logikę biznesową? Czy mapper będzie dobrym miejscem czy stworzyć osobne klasy modelu zawierające logikę?
Pozdrawiam. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Z tego co czytałem o wzorcu DAO stosowanym w Javie, Mapper ma wprowadzać podstawową logikę modelu - CRUD. Dodatkowe operacje pakowane są do osobnej warstwy. Poszukaj na necie o tym wzorcu w językach innych niż PHP (php'owe wydania są dość ubogie w przydatne informacje)
ps. ja w swoich aplikacjach pisanych pod zenda używałem osobnych modeli jako dodatkową warstwę + serwisy np. do generowania dokumentów, wysyłki maili itp Ten post edytował CuteOne 13.08.2012, 17:28:55 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 8.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje za szybką odpowiedź. DAO i CRUD znam również z J2EE. Rozumiem, że klasy logiki tworzysz w osobnych plikach, czy znajdują się one w lokalizacji \application\models czy np. \application\models\logic - mają własny katalog? Czy przechowywanie ich w osobnym katalogu 'nie jest problematyczne' dla Zenda? Będę wdzięczny za przykład jak wygląda w Zendzie zastosowanie tych wzorców - jak dokładnie wygląda klasa mappera - jakie metody udostępnia dla logiki oraz jak logika je wykorzystuje.
W chwili obecnej napisałem klasę logiki, która niestety korzysta bezpośrednio z obiektu typu DbTable (udostępnianego przez mappera) co osobiście mi się nie podoba, ponieważ uważam, że tylko mapper powinien z niego korzystać, a logika jedynie z metod mappera. Nie wiem czy dobrze myślę, dlatego proszę o wskazówki. Pozdrawiam. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 60 Dołączył: 25.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
ps. ja w swoich aplikacjach pisanych pod zenda używałem osobnych modeli jako dodatkową warstwę + serwisy np. do generowania dokumentów, wysyłki maili itp Chyba masz na myśli services, czyli po polsku usługi? ![]() ptr0 od siebie dodam, że pogrupować sobie klasy możesz w jakie chcesz katalogi, od tego jest odpowiednio skonfigurowany autoloader. Grunt, żeby było logicznie i przejrzyście, jeśli już rozdzielasz modele logiki, mappery i klasy od tabel/wierszy. Nie ma tu jedynie słusznego, odgórnie narzuconego sposobu. Po prostu zrób to z sensem. Chcesz rozdzielić, to bardzo dobrze, rozdziel ![]() -------------------- there is much to be learned
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
@up tak chodzi o services
@ptr ja w swoich aplikacjach stosuję moduły do rozdzielenia aplikacji na pomniejsze części. Dla własnej wygody "globalne" pluginy, modele itp. trzymam w osobnym module np. "modules/library", aby autoloader wiedział co i jak w bootstrapie wstawiam dodatkowy *_Module_AutoLoader
Dodatkową warstwę logiki trzymam już w samych modułach "/module/nazwa_modułu/models/", w których na spokojnie pobieram sobie Mappery i na nich operuje |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 8.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jestem zaskoczony, Zend sam załadował wszystkie klasy bez dodawania czegokolwiek w Bootstrap - nawet mimo nazwy katalogu mappers, a nazwy klasy zawierającej 'Model_Mapper'. Dodam, że działam na wersji 1.11.12. Dziękuje za wszystkie porady i przykład.
Pozdrawiam. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Mappers/ i DbTables/ już istnieją jako domyślne ścieżki w autoloaderze, niestety jeżeli chcesz dodać pełną funkcjonalność DAO (Entities) trzeba w bootstrapie dodać odpowiednie ścieżki tak jak w przykładzie powyżej. Polecam przerobić aplikacje na modularną - daje większe możliwości konfiguracji, no i łatwiej jest nią zarządzać
Pozdrawiam |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 17.06.2025 - 07:58 |