Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MVC - klasy modelu - pojedyncze obiekty i listy
marcini82
post
Post #1





Grupa: Zarejestrowani
Postów: 190
Pomógł: 1
Dołączył: 20.05.2005
Skąd: Poznań

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


Witam!

Pytanie dotyczy klas modelu w rozumieniu wzorca MVC, a ma zastosowanie chyba do prawie kazdego rodzaju danych przechowywanych w bazie. Otoz jesli mamy jakiekolwiek obiekty (uzytkownikow, ogloszenia, wiadomosci, itp.), to zazwyczaj istnieje potrzeba przeprowadzania operacji na pojedynczym obiekcie (dodanie, usuniecie, edycja itp.) oraz na grupie obiektow, spelniajacych okreslone kryteria (np. wyswietlenie listy uzytkownikow, ogloszen itp.). Jaka tworzycie tutaj strukture klas?
Czy robicie dwie klasy, z ktorych jedna reprezentuje pojedynczy obiekt a druga liste takich obiektow (np. Uzytkownik i ListaUzytkownikow)? A moze jedna klasa (np. Uzytkownik) posiada metody obslugujace obie mozliwosci, np. pobierz($id) dla pojedynczego obiektu i pobierzListe() dla calej listy obiektow? A moze jeszcze inaczej?

EDIT: Wlasciwie to ten temat powinienem dac do PHP > Programowanie obiektowe. Moze moderator zechcialby go przeniesc?

Ten post edytował marcini82 3.03.2007, 14:58:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Strzałek
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 384
Pomógł: 6
Dołączył: 11.09.2004
Skąd: Grodzisk Mazowiecki

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


Trochę mało wygodnie to masz. Przy tabelach które nie potrzebują joinów u mnie wystarczy

  1. <?php
  2.  
  3.  class NewsContainer extends DatabaseMapper {
  4.  public $table = "news";
  5.  }
  6.  
  7. ?>


I juz mam wszystko czego potrzebuję

  1. <?php
  2.  
  3. $news = new NewsContainer();
  4.  
  5. $news -> findAll();
  6. //lub
  7. $fields = array('id', 'title', 'time', 'comments', 'intro');
  8. $criteria = array('sort_by' => 'id', 'sort_type' => 'DESC', 'limit' => '10');
  9.  
  10. $news -> findAll($fields, $criteria);
  11.  
  12.  
  13. $news -> findById($id);
  14. $news -> findByTitle('Tytuł newsa');
  15.  
  16. $news -> deleteById($id);
  17.  
  18. $nowyNews = array('title' => 'Super tutuł', 'text' => 'tresc', 'time' => time());
  19.  
  20. $news -> save($nowyNews);
  21.  
  22. ?>


Proste prawda (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ?

Do każdej rzeczy będziesz teraz pisał findAll, findBy(.*), ja u siebie mam abstrakcyjna klasę modelu, która mam podstawowe metody - find, save, update, delete + dodatkowo, __call które obsługuje findByTitle odpalając metodę find z odpowiednimi argumentami. Taki sposobem powstał mały DatabaseMapper. Bez żadnych wodotrysków i zapytań z joinami. Jeżeli potrzebuję do NewsContainer'a łaczyć tabele, dopisuje sobie wtedy metodę i recznie piszę zapytanie.

No chyba że mam tego więcej. Wtedy mamy Propel lub PHP Doctrine
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: 11.10.2025 - 12:30