![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 12 Dołączył: 3.03.2008 Skąd: łódzkie Ostrzeżenie: (0%) ![]() ![]() |
Korzystam z frameworka Kohana, ale myślę, że jest to w miarę niezależny od tego problem.
Mam model User, na którego składają się zawsze jeden Adres, i jeden lub więcej Samochodów. I teraz dylemat polega na tym w jaki sposób dodawać model User? Opcja 1: Czy w akcji dodaj, kontrolera users po kolei stworzyć obiekty składowych modeli, dodać je (oczywiście zgodnie z kolejnością wymuszoną strukturą bazy i odwołaniami kluczy obcych) przypisując odpowiednio wartości kluczy obcych?
Opcja 2: Czy może w akcji dodaj, kontrolera users wywołać metodę add() obiektu reprezentującego model User, a odpowiednie składowe modelu User, pododawać wewnątrz metody add()(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Wybierając opcję 1 mam mniej powiązane ze sobą modele. Ale za to nawalone w kontrolerze kodu co przeczy zasadzie chudy kontroler gruby model. Opcja 2 jest bardziej intuicyjna, kontroler raczej nie powinien być świadom z czego się skłąda user. Ma dodać usera i koniec. Obiekt Usera wie co jest mu do życia potrzebne i sobie to sam dodaje. A może są jeszcze jakieś inne opcje?? Kłaniają się tu pewnie wzorce projektowe. Może jakaś fabryka Userów ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Ja tego typu sytuacje rozwiązuję po stronie kontrolera. Bardziej PRO byłoby chyba jednak wpakowanie takiej logiki do modelu. Byłoby to swego rodzaju imitacją triggerów.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 12 Dołączył: 3.03.2008 Skąd: łódzkie Ostrzeżenie: (0%) ![]() ![]() |
No ja właśnie wybrałem opcję 2, ale ponieważ nie pewnie się czuję z tym to pytam tutaj (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Dodałem do takiej implementacji wyjątki, które potworzyłem sobie każdy oddzielny dla każdego modelu. Walidacja też jest w modelach i teraz jak gdzieś coś nie spełni reguł walidacji to wale konkretnym wyjątkiem i gra i buczy. Całość nawet fajnie działa. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 06:38 |