Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ukrywanie metod modelu przed widokiem
coolos
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 15.04.2009

Ostrzeżenie: (0%)
-----


Witam,

mam pytanie w jaki sposób ukryć metody modelu przed widokiem? Chciałbym aby z poziomu akcji możliwe było wywołanie:

  1. $news->add_news($id);


lecz żeby niemozliwe było to w widoku. Chciałbym aby widok, pobierał dane tylko z getterów.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Orzeszekk
post
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 14
Dołączył: 8.09.2011

Ostrzeżenie: (0%)
-----


uzyj smarty jako widoku

albo jesli koniecznie chcesz miec wlasny framework php, to wysyłaj paczkę danych z kontrolera (tzw viewModel), do widoku, zamiast wysylac twoj domain model.

niech kontroler uruchomi domain model (logike biznesowa), pobierze z niego potrzebne dane, ulepi z niego viewmodel w postaci klasy lub tablicy asocjacyjnej i tą paczke wysle do widoku w celu jej wyswietlenia. W ten sposob bedziesz mial zapewnione ze widok będzie "głupi" tj nie bedzie zawieral logiki.

robienie viewModelu to dobry wzorzec, dzieki temu mozesz podmienic klasy logiki bez modyfikowania widoków. Nie wiem jak pehapowcy, w asp.net mvc to praktyka zalecana.

Ten post edytował Orzeszekk 13.06.2012, 16:01:31
Go to the top of the page
+Quote Post
coolos
post
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 15.04.2009

Ostrzeżenie: (0%)
-----


Cytat(Orzeszekk @ 13.06.2012, 16:57:41 ) *
uzyj smarty jako widoku


Szablon a Widok to różnica (IMG:style_emoticons/default/wink.gif) .

  1. albo jesli koniecznie chcesz miec wlasny framework php, to wysyłaj paczkę danych z kontrolera (tzw viewModel), do widoku, zamiast wysylac twoj domain model.
  2.  
  3. niech kontroler uruchomi domain model (logike biznesowa), pobierze z niego potrzebne dane, ulepi z niego viewmodel w postaci klasy lub tablicy asocjacyjnej i tą paczke wysle do widoku w celu jej wyswietlenia. W ten sposob bedziesz mial zapewnione ze widok będzie "głupi" tj nie bedzie zawieral logiki.
  4.  
  5. robienie viewModelu to dobry wzorzec, dzieki temu mozesz podmienic klasy logiki bez modyfikowania widoków. Nie wiem jak pehapowcy, w asp.net mvc to praktyka zalecana.


Z pewnością efekt finalny zostałby osiągnięty przy takim podejściu. Z tym że tworzenie "viewModel" jak to nazwałeś to nic inego jak wspomniany post wyżej przezemnie antywzorzec projektowy "anemiczny model dziedziny". Przesyłanie tablic asocyjacyjnych również nie uważam za rozwiązanie, to że tworzy się jakieś obiekty i pobiera z nich dane w postaci tablic nie czyni aplikacji obiektowej (są to jedynie procedury poupychane w klasach).

Szukam jakiegoś innego sposobu na ukrycie metod z logiką biznesową przed widokiem.


Cytat(Crozin @ 13.06.2012, 17:01:42 ) *
@coolos: Prawdę powiedziawszy ciężko tutaj powiedzieć czy to będzie poprawne czy nie bo nie znamy Twojego przypadku, ale generalnie używanie DTO nie jest czymś złym. Jedyne co można z całą pewnością powiedzieć to to, że obiekt posiadający methody addNews() i, jak się domyślam, coś w stylu getRecentNews(), getNewsByAuthor() nie powinien w ogóle istnieć (powinny to być osobne obiekty).


Przynam szczerze że korzystałem jak do tej pory z DTO i było ok.

Miałem np. klase news_model oraz news_model_manager, manger manipulował danymi dodając i pobierając newsy jako obiekty news_model.

Z tym że ostatnio naczytałem się że ogólnie takie podejście nie jest ok, jeżeli chodzi o programowanie obiektowe i szukam innego sposobu.


Szukam jakiegoś pomysłu na realizacje modelu2 z tego artykułu.

Ten post edytował coolos 13.06.2012, 16:25:21
Go to the top of the page
+Quote Post

Posty w temacie
- coolos   Ukrywanie metod modelu przed widokiem   13.06.2012, 15:07:59
- - Crozin   Prawdopodobnie powinieneś mieć dwa różne obiekty, ...   13.06.2012, 15:17:43
|- - coolos   Cytat(Crozin @ 13.06.2012, 16:17:43 )...   13.06.2012, 15:22:19
- - Orzeszekk   uzyj smarty jako widoku albo jesli koniecznie chc...   13.06.2012, 15:57:41
|- - coolos   Cytat(Orzeszekk @ 13.06.2012, 16:57:4...   13.06.2012, 16:23:21
|- - Orzeszekk   Cytat(coolos @ 13.06.2012, 17:23:21 )...   13.06.2012, 18:13:25
- - Crozin   @coolos: Prawdę powiedziawszy ciężko tutaj powiedz...   13.06.2012, 16:01:42
- - Orzeszekk   to ze ograniczy mozliwosci umieszczania logiki w w...   13.06.2012, 16:07:52
- - Crozin   Cytat[...] Z tym że ostatnio naczytałem się że ogó...   13.06.2012, 16:41:02
|- - coolos   Cytat(Crozin @ 13.06.2012, 17:41:02 )...   13.06.2012, 16:54:19
- - Crozin   Wątek zejdzie nam tutaj nieco na inny temat (repre...   13.06.2012, 17:59:25
- - coolos   Cytat(Orzeszekk @ 13.06.2012, 19:13:2...   13.06.2012, 18:59:24
|- - Orzeszekk   Cytat(coolos @ 13.06.2012, 19:59:24 )...   13.06.2012, 21:29:54
|- - coolos   CytatOdkrywanie kwadratowego koła (ang. Reinventin...   13.06.2012, 21:47:53
- - Crozin   Przeczytałem ten artykuł (pomijając dwie ostatnie ...   13.06.2012, 19:41:35
- - Mephistofeles   Z takim podejściem każdy producent samochodów twor...   13.06.2012, 22:04:28
- - !*!   Mephistofeles - nie zaczynaj znowu.   13.06.2012, 22:05:57
- - Orzeszekk   Cytat(coolos @ 13.06.2012, 22:47:53 )...   13.06.2012, 22:46:01
- - irmidjusz   Cytat(coolos @ 13.06.2012, 16:07:59 )...   14.06.2012, 01:41:52
- - Orzeszekk   Cytat(irmidjusz @ 14.06.2012, 02:41:5...   14.06.2012, 14:51:50


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 20:50