Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 743 Pomógł: 0 Dołączył: 11.11.2003 Skąd: Toruń Ostrzeżenie: (0%)
|
Witam,
znów mam problem z zaplanowaniem przepływu wszystkich danych w aplikacji. Wedle poprzednich podpowiedzi, które uzyskałem na forum zrobiłem tak (na przykładzie dodawania newsa): NewsModel.php
NewsController.php
No i niby wszystko dziala ladnie, mam kontroler ktory przekazuje dane do modelu, model te dane zapisuje i wszystko jest good. Ale teraz gdy planuję dodać nową kolumnę w bazie danych, muszę modyfikować Model, wszystkie kontrolery które uzyły danego Modelu. Dodatkowo jeśli gdzieś nie zmienię kontrolera to np. content zapisze mi sie jako title, bo zmieni sie kolejnosc zmiennych wchodzących do funkcji i wszystko sie pokrzaczy. Dobrze to robię, twrząc dla każdego zadania nową funkcję w modelu i przekazując do niej dane jako parametry funkcji? I też pytanie czy to nie jest bez sensu takie duplikowanie wielu funkcji które dostarcza mi ORM Propel. Np. żeby pobrać newsa o danym id, napisąłem funkcję w modelu:
Ale przecież równie dobrze mogłem od razu w kontrolerze pobrać newsa za pomocą funkcji dostarczonych przez ORM:
Jakie mam korzyści z przerzucania zadań do modelu. Nie dodaję sobie tym zbędnej pracy, pisząc masę metod które w sumie już posiadam? Ten post edytował Kuziu 14.02.2011, 12:20:02 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
Ciężko tak jednoznacznie nie znając specyfiki projektu odpisać Ci że robisz dobrze lub źle. Generalnie model powinien być jak najbardziej samodzielnym "klockiem", który pewne powtarzalne czynności dziedziczy ze wspólnej klasy bazowej. Odwzorowanie bytów (klas) powinno odzwierciedlać w idealnym przypadku relacje rzeczywiste, jakie zachodzą pomiędzy prawdziwymi "obiektami" w rzeczywistości. Myślę, że najlepiej dla Ciebie w tej sytuacji byłoby gdybyś poczytał o programowaniu kontraktowym i używaniu interfejsów tak często lekceważonych. Na etapie projektowym jest to bardzo pożyteczna metodyka programowania. Pamiętaj przy tym o zasadzie programowania pod interfejs, nigdy pod implementację. Następnie jeśli chcesz pisać dobre API poczytaj o TDD i wykorzystaniu PHPUnit. Piszę to po to, byś wiedział, że są pewne narzędzia, które w znacznym stopniu ułatwiają zarówno modelowanie obiektowe jak też uczą dobrych nawyków i pozwalają na tworzenie wydajnych, i "czytelnie napisanych" aplikacji, którymi w późniejszym czasie jest łatwiej zarządzać, a przez to obniża się późniejsze koszty konserwacji kodu, co w praktyce jest bardzo ważne.
|
|
|
|
Kuziu MVC 14.02.2011, 12:11:26
darko Gdyby się tak czepić, to - zgodnie z zasadą single... 14.02.2011, 12:20:25
Kuziu Korzystam z Propela. A modele dzielę na te zajmują... 14.02.2011, 12:26:13
Kuziu Dzieki za linki, biore sie za lekture 14.02.2011, 12:51:52
Crozin 1. Problem jest z Twoją metodą NewsModel::addChild... 14.02.2011, 13:11:11
Kuziu Ale jeśli zrobię tak jak piszesz:
[PHP] pobierz,... 16.02.2011, 08:42:05 
rzymek01 Cytat(Kuziu @ 16.02.2011, 08:42:05 ) ... 16.02.2011, 12:30:49
Crozin Cytatto otrzymuję coś identycznego jak używając sa... 16.02.2011, 13:27:35
Kuziu Dzieki. Czyli rozumiem że to kontroler powinien s... 16.02.2011, 14:22:19
erix CytatI czy powinienem przekazywać zawsze $use... 16.02.2011, 17:55:17
Crozin CytatI czy powinienem przekazywać zawsze $use... 16.02.2011, 18:07:50
Kuziu Kolejny raz dzięki za odpowiedzi. Błędnie zapisałe... 16.02.2011, 19:41:55
Crozin Cytat[...] która jest singletonem [...]Po co Ci ta... 16.02.2011, 20:37:02
Kuziu CytatPo co CI tam singleton?
np. po to by wszystk... 16.02.2011, 20:45:47
Crozin CytatChyba że źle myślę.Źle myślisz. Przecież raz ... 16.02.2011, 22:08:02
Kuziu No i właśnie znów widzę że "a potem ktoś na f... 16.02.2011, 22:39:19
Crozin CytatNo i właśnie znów widzę że "a potem ktoś... 17.02.2011, 17:02:55
darko toś się rozpisał (delete this post) 18.02.2011, 02:42:22
Kuziu Thx Crozin.
Znów jest jaśniej Rozumiem, że np. m... 18.02.2011, 15:44:18 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 22:24 |