Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Tworzenie obiektów w zgodzie z mvc
Fixus
post
Post #1





Grupa: Zarejestrowani
Postów: 295
Pomógł: 9
Dołączył: 8.02.2006

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


Witam mam mały czysto teoretyczny problem.

Chodzi o wzorzec MVC.

Załóżmy, że mamy OBIEKT typu Human
Każdy human ma właściwości jak $name, $surname i $age

i załóżmy, że OBIEKT typu human ma metodę służącą do pobrania wszystkich zapisanych ludzi zbazy danych

getAllHumans()

Teraz czy jeżeli bezpośrodnie w tym obiekcie odwołam się do bazy będzie to zgodne z tym wzorcem projektowym? Czy trzeba odwołać się do modelu który połączy się z bazą i to pobierze ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Powtarzam jak bedzie to w modelu to bedzie zgodne.
Go to the top of the page
+Quote Post
Nattfarinn
post
Post #3





Grupa: Zarejestrowani
Postów: 136
Pomógł: 22
Dołączył: 19.09.2007
Skąd: Sosnowiec

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


Cytat(marcio @ 2.11.2009, 15:01:14 ) *
Powtarzam jak bedzie to w modelu to bedzie zgodne.

Czyli możesz napisać wprost, że zgodne nie jest, bo autor w pierwszym poście pytał przecież:
Cytat(Fixus @ 2.11.2009, 11:03:06 ) *
Teraz czy jeżeli bezpośrodnie w tym obiekcie odwołam się do bazy będzie to zgodne z tym wzorcem projektowym? Czy trzeba odwołać się do modelu który połączy się z bazą i to pobierze ?


Ale wracając do Twojego ostatniego pytania, tak jak nie wprost powiedział kolega: Ze wzorcem MVC zgodne nie będzie. Najpoprawniej i najwydajniej byłoby tworzyć obiekty klasy Human z już istniejących, pobranych przez odpowiedni model danych. Tworzenie obiektu, który dane pobiera sobie indywidualnie przez różnorakie metody (chociaż konstruktor byłby bardzo odpowiedni) ma niewielką rację bytu i nie widzę większego sensu tworzenia takich elementów. Owszem, jako pytanie teoretycznie przykład dobry, ale uczulam na takie zagrania (IMG:style_emoticons/default/smile.gif) . Widzę, że największe problemy masz ze zrozumieniem czym właściwie jest wzorzec MVC i jak go zastosować. Po krótce mogę powiedzieć Ci tylko tyle, że to obiekty będące Modelami powinny wykonywać wszelkie operacje we/wy na danych z zewnętrznych źródeł (tj. baza danych, plik etc) i dopiero same dane przekazywać poszczególnym, wyspecjalizowanym obiektom. Model działa tutaj jako pośrednik i chociaż składnię może mieć niewiele bardziej skomplikowaną od Twojego przykładu i na dobrą sprawę jest zupełnie zbędny (obiektowość też jest przecież zbędna) - ujednolica projekt i sprowadza do stosowania metod modelu zamiast każdorazowego operowania zapytaniami czy plikami. To tyle jeśli chodzi o sam model. Literatury elektronicznej o MVC google podpowie o wiele więcej niż jestem w stanie sobie wyobrazić - dlatego nie będę próbował się z Google siłować (IMG:style_emoticons/default/winksmiley.jpg) .

Podsumowując: nawet jeśli przykład...
  1. class Human {
  2. public $id = 12345;
  3. (...)
  4. public function getHuman($id) {
  5. $sql = "select * from tabela wher eid = 'id'";
  6. return (...);
  7. }
  8. }

... nie jest poprawny, to ten już jest:
  1. class PopulationModel {
  2. public function getHumanById($id) {
  3. $sql = "select * from tabela wher eid = 'id'";
  4. return (...);
  5. }
  6. }
  7.  
  8. class Human {
  9. public $id = 12345;
  10. public function getHuman($id) {
  11. $population = new PopulationModel();
  12. return $population->getHumanById($this->id);
  13. }
  14. }

Nie skupiam się w tym momencie nad sensownością, ale zachowaniem funkcjonalności przy jednoczesnej zgodności z MVC.

Ten post edytował Nattfarinn 2.11.2009, 15:55:39
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 06:03