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
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Wątek zejdzie nam tutaj nieco na inny temat (reprezentacji bazy danych w aplikacji), ale mniejsza z tym... od razu zaznaczę, że wypowiadam się jedynie w kontekście tych trzech cytatów, nie całych artykułów.

Mocno bym się spierał z tym co zostało tu przedstawione. Zarzucają, że obiekty domeny nie posiadają logiki co nie jest do końca prawdą. Wydaje mi się, że autorzy za bardzo wzięli sobie do serca podstawową definicję obiektówki*. Obiekty takie zawierają po prostu najbardziej elementarną logikę, która nie wymaga żadnych dodatkowych zależności czy skomplikowanego kodu. Czyli dla przykładowego obiektu News będą to metody pozwalające przyporządkować mu daną kategorię albo sprawdzić czy nie został on skasowany (gdzie skasowanie traktuje się np. jako niepustą wartość pola deletedAt). Innymi słowy proste metody, gdzie większość z nich mieści się w 5 - 15 linijkach kodu (nie mówię tutaj o klasycznych getterach/setterach).
Na samą myśl co by się stało z tym obiektem, gdyby wrzucić do niego realną, "ciężką" logikę słabo mi się robi. Ten nieszczęsny obiekt stałby się nagle odpowiedzialny na kilka, może nawet kilkanaście rzeczy na raz. Praca z takimi potworkami do przyjemnych nie należy, a gdy nagle trzeba dla jakiegoś fragmentu aplikacji zastosować inną logikę mamy niezły problem - bo właściwie jedyne co da się zrobić to dziedziczyć, czyli robić z potworka prawdziwe monstrum.

Dalej twierdzą, że takie obiekty niby są idealnym odzwierciedleniem bazy danych, co jest oczywiście bzdurą. Interfejs takich obiektów powinien być projektowany pod dobry model domeny, nie bazę danych (czy jakiekolwiek inne źródło danych). Przy późniejszym zapisie danych do źródła danych model obiektowy powinien zostać przetworzony na model relacyjny dla bazy danych - ale to już zadanie jakiegoś porządnego ORM-a, a nie samego obiektu domeny.

* Podstawowa definicja programowania obiektowego to połączenie struktury danych i funkcji operujących na niej w jeden logiczny obiekt, co stoi w sprzeczności z programowaniem proceduralnym, gdzie struktura danych i funkcje operujące na niej są kompletnie niezależne.
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: 7.10.2025 - 04:51