Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]podział na klasy
perhydrol
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 11.12.2006

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


Witam,

od jakiegoś czasu eksperymentuję z obiektowym PHP, jednak moje strukturalne myślenie skutecznie mi to utrudnia.
Tylko proszę nie odsyłajcie do przeszukiwania tematów jak wielokrotnie twierdzicie iż temat był poruszany tysiące razy,
ja jednak szukając odpowiedzi w postach już istniejących na tym forum nie znalazłem satysfakcjonującej odpowiedzi.

Mam prośbę, czy mógł by ktoś mi wypisać na przykładzie sklepu internetowego podział na klasy, oraz zakwalifikować je do odpowiednich części:
Model, View, Controller

Coś w stylu listingu klas, i nie jest to z mojej strony wyręczanie się Wami, a jedynie chciał bym dostrzec jak szczegółowo należy podejść do podziału danej dziedziny sklepu internetowego na klasy. Dzięki przypisaniu ich do odpowiednich części MVC, myślę że będę mógł szybciej i lepiej zrozumieć to z czym się borykam. Dodam może że do UML-a używam "NetBeans IDE 6.7.1"

a interesujące mnie rozwiązanie to coś w stylu:

  1. class DB_Connect // klasa inicjująca połączenie z baza danych
  2. class DB_View // klasa zapytań do bazy danych
  3. .... // tu kolejne pytanie czy jest sens przechowywać wszystkie zapytania do bazy danych, np SELECT ... w jednym pliku?
  4. .... // no i jeszcze jak by mógł mi ktoś zaznaczyć która klasa do jakiej części modelu MVC się zalicza


Ten post edytował nospor 14.10.2009, 23:08:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Dla mnie termin baza danych jest jednoznaczny i stąd tak to odebrałem. W takich sytuacjach by unikać nieporozumień używam po prostu dane lub źródło danych. To terminy na tyle abstrakcyjne, że można pod nie podpiąć jakąkolwiek formę danych.

Co do notacji wielbłądziej jestem zwolennikiem. W PHP sens nabiera węgierska, bo nieraz w locie się zmienia typ, a to nie zawsze jest pożądane.

Odnosząc się do przykładu zgadzam się, że tak powinno to wyglądać, z tym, że tak naprawdę sparsowanie nie jest potrzebne kontrolerowi. Ono się już wewnątrz samego modelu powinno wykonać. Ty podajesz parametry a w modelu odbiera je, parsuje i przetwarza w powiązaniu ze źródłem danych. Tak zwrócone dane kontroler dystrybuuje do widoku (lub kilku). Dla mnie w takim wypadku nie ma znaczenia czy kontroler wie czy nie z czym ma do czynienia. Gdyby jakiś przykład podać, to myślę, że dobrym mógłby by być JS, a konkretnie aplikacja z AJAX i powiązanymi select. Kontroler nie wie jakie ma dostępne możliwości. Źródło danych dynamicznie je dołącza. Kontroler ma tylko dostęp do metod ogólnych, a źródło wybiera na podstawie dynamicznie dołączanej listy. W ten sposób możemy w zależności od sytuacji okrajać lub poszerzać możliwości aplikacji, zaś kontroler mimo braku świadomości warstwy niżej może nakazać modelowi stosowanie konkretnego typu danych. Po prostu wywoła metodę ogólną i to będzie jego jedyne zadanie, ewentualnie ustawi źródło danych. Raz będzie to plik, a raz baza. Z tą wykładnią modelu jaką obecnie podałeś mogę więc się zgodzić. Pisząc jednak o świadomości kontrolera co wywołuje mimowolnie narzucasz odbiorcy myślenie w formie istnienia funkcji kontrolera, która zajmuje się określonym wariantem, czyli dla mnie i zapewne wielu osób zamiast get(param) -> getXML(param), getDB(param). I stąd nasze nieporozumienie. Można powiedzieć, że nie mówiliśmy niewystarczająco abstrakcyjnie (IMG:style_emoticons/default/winksmiley.jpg)

Co do tego czy kontroler wie co może być źródłem danych, to on nie musi tego wiedzieć. Tę świadomość ma klasa związana z konfiguracją. Kontroler ma do niej dostęp i wpływać może na nią, co skutkuje także wpływem na używanie przez model określonego źródła danych. Instalacja "pluginu" jest, przykładowo, poinformowaniem konfiguracji "hej... pojawił się nowy typ źródła danych. Jakby co poinformuj odpowiednie kontrolery, że mogą mnie wybrać, a modele mają przeciążone pewne funkcje". To, jak to będzie rozwiązane to już osobna sprawa (IMG:style_emoticons/default/smile.gif) Może to być choćby zwykły dopisek w pliku konfiguracyjnym, że w ścieżce takiej a takiej jest plik, który można użyć i służy on do obsługi innego źródła danych niż dotychczasowo znane. Myślę, że opisałem moje podejście zrozumiale, bo nie wiem czy można jeszcze inaczej. Tak chyba było najprościej. Może co prawda zajść sytuacja, że ma coś w konfigu, ale user perfidnie wywalił pliki odpowiadające za dany typ źródła danych. No ale od tego jest system obsługi błędów (IMG:style_emoticons/default/winksmiley.jpg)

Ogólnie widzę, że zaczynamy już dochodzić do consensusu w sprawie terminologii i postrzegania wielu aspektów, a co za tym idzie, mniej pojęć i zdań niejednoznacznych (IMG:style_emoticons/default/smile.gif)

EDIT: Bym zapomniał... Wspomniane
Cytat
Chodzi mi o to, żeby on wywołał wyslij(typ wysyłki, dane_z_formularza)
Może ostatecznie być rozwiązane na dwa sposoby:
1) Kontroler dowiaduje się z klasy konfiguracji co mamy za źródła danych i jakie z nich jest domyślne (tak odbieram teraz Twoje podejście)
2) Informacje o źródle danych pobiera sam model, też z konfiguracji, przykładowo podczas wywołania konstruktora (to podejście podzielam ja) i w ten sposób nie jest potrzebne określanie typu wysyłki.
Efekty będą identyczne.

Ten post edytował thek 16.10.2009, 11:09:56
Go to the top of the page
+Quote Post

Posty w temacie
- perhydrol   [PHP]podział na klasy   13.10.2009, 14:43:03
- - thek   MVC robią dokładnie to co sugeruje nazwa. Różnica ...   13.10.2009, 15:10:22
- - perhydrol   dzięki wielkie "thek" za zrozumiały opis...   14.10.2009, 21:12:17
- - jmail   hmmmmm. zdaje mi się czy pomyliliśmy pojęcia MVC? ...   14.10.2009, 21:22:04
- - perhydrol   wiec tak dla sprostowania, pojęć nie pomyliłem, mo...   14.10.2009, 22:52:33
- - thek   Zauważ, że przykładową klasą Użytkownik mieszasz j...   15.10.2009, 08:24:26
- - jmail   Cytat(thek @ 15.10.2009, 09:24:26 ) Z...   15.10.2009, 11:53:12
|- - dr4ko   Cytat(jmail @ 15.10.2009, 12:53:12 ) ...   15.10.2009, 14:55:42
- - fenix.robi   Ja proponuje skorzystać z fameworka CAKE'a, kt...   15.10.2009, 14:25:54
- - thek   To może jmail wyjaśnię dlaczego podałem taki a nie...   15.10.2009, 14:27:19
- - jmail   nie no to są dwie zupełnie różne rzeczy. Jeżeli ...   15.10.2009, 14:55:11
- - jmail   dr4ko czekaj czekaj. czy to nie jest tak, że model...   15.10.2009, 15:03:40
|- - dr4ko   Cytat(jmail @ 15.10.2009, 16:03:40 ) ...   15.10.2009, 15:18:10
- - jmail   no i właśnie o to chodzi. model jest tylko zbiorem...   15.10.2009, 15:24:37
- - dr4ko   Logika biznesowa powinna być zawarta w modelu, a k...   15.10.2009, 15:50:59
- - jmail   to jest Twoja opinia. moja jest taka, że jeżeli wp...   15.10.2009, 16:01:21
|- - phpion   Cytat(jmail @ 15.10.2009, 17:01:21 ) ...   16.10.2009, 12:11:49
- - dr4ko   Ok, ja się poddaję, nauczyciel ze mnie kiepski. Al...   15.10.2009, 16:23:39
- - thek   Dr4co ma IHMO rację. Przyłącze się do przykładu z ...   15.10.2009, 16:28:05
- - jmail   ale chwilę. To co dałeś to jest modyfikacja pure M...   15.10.2009, 16:29:36
- - dr4ko   Bzdura. To co podałem to jest najczystsze MVC jaki...   15.10.2009, 16:41:26
- - jmail   to jak chcesz zrobić logikę biznesową bez bazy dan...   15.10.2009, 16:54:35
- - dr4ko   A gdybym chciał zrobić aplikację obliczeniową? Np ...   15.10.2009, 18:10:32
- - jmail   no to teraz sam sobie zaprzeczasz. kalkulator albo...   15.10.2009, 18:13:04
|- - dr4ko   Cytat(jmail @ 15.10.2009, 19:13:04 ) ...   15.10.2009, 21:13:01
- - thek   jmail... my mówimy teraz o braku danych czy braku ...   15.10.2009, 20:24:18
- - perhydrol   Panowie, czytam wasze wypowiedzi i osobiście każdą...   15.10.2009, 21:51:04
- - dr4ko   Spoko, chodzi przecież o to żebyś zrozumiał. Jest ...   15.10.2009, 22:27:26
- - perhydrol   właśnie się zastanawiałem czy rozbijać MailSender_...   15.10.2009, 23:00:22
- - jmail   no dr4ko wreszcie się z czymś zgadzamy potwierdż...   16.10.2009, 00:12:59
- - thek   Dla mnie termin baza danych jest jednoznaczny i st...   16.10.2009, 11:01:45
- - dr4ko   Idealną sytuacją by było gdyby ani kontroler ani m...   16.10.2009, 12:04:50


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

 



RSS Aktualny czas: 13.10.2025 - 06:38