Witam,

Piszę stronę/frameworka na zaliczenie i mam następujący dylemat.

Nie wiem jakie rozwiązanie projektowe najlepiej wybrać.

Problem mam taki, iż tworząc model NEWS nie wiem czy umieścić w nim takie pola jak np. komentarze(kolekcję modeli NEWS_COMMENT) czy też odzielić modele NEWS_COMMENT od modelu NEWS a następnie przesłać je do widoku?

Poniżej naszkicowany przykładowy problem:

  1. class NEWS_CTRL{ //kontroler newsów
  2.  
  3. public function get_news(){
  4.  
  5. $view = new NEWS_VIEW;
  6.  
  7. $news_man = new NEWS_MODEL_MANAGER();
  8.  
  9. $news = $news_man->get_news($id);
  10.  
  11. $view->news($news);
  12.  
  13. }
  14.  
  15. }
  16.  
  17. class NEWS_MODEL{ //przykladowy MODEL NEWSA dane przekazywane przez settery i gettery
  18.  
  19. private $id
  20.  
  21. private $title;
  22.  
  23. private $content;
  24.  
  25. private $user; // zawiera model USER_MODEL
  26.  
  27. private $comments; // zawiera kolekcje modeli NEWS_COMMENT_MODEL
  28.  
  29. }
  30.  
  31. class NEWS_MODEL_MANAGER{
  32.  
  33. public function create_news($dane){
  34.  
  35. $news = new NEWS_MODEL();
  36.  
  37. $news->id = $dane['id'];
  38.  
  39. $news->title = $dane['title'];
  40.  
  41. $news->content = $dane['content'];
  42.  
  43. // stworzenie obiektu uzytkownika
  44. $user_man = USER_MODEL_MANAGER;
  45. $news->user = $user_man->create_user($dane['user']);
  46.  
  47.  
  48.  
  49. $comment_man = NEWS_COMMENT_MODEL_MANAGER;
  50.  
  51. //poniższa metoda zwraca NEWS_COMMENT_MODEL_COLLECTION w której znajdują się obiekty NEWS_COMMENT_MODEL
  52. $news->comments = $comment_man->get_comments($dane['id']);
  53.  
  54. return $news;
  55. }
  56.  
  57. public function get_news($id){
  58.  
  59. // tutaj nastepuje pobranie danych z bazy
  60. return $this->create_news($dane_z_bazy);
  61.  
  62.  
  63. }
  64.  
  65. }
  66.  
  67. class NEWS_VIEW(){
  68.  
  69. public function news(NEWS_MODEL $news){
  70.  
  71. // tutaj ladowanie wszystkiego do szablonu
  72.  
  73. }
  74.  
  75. }
  76.  



Problem teraz polega na tym że komentarze mają swój szablon do wyświetlenia i nie wiem czy taka praktyka ładowania komentarzy newsów (nie chodzi tu tylko o te komentarze ale też o jakieś przyszłosciowe rozwiązania) do modelu NEWS_MODEL ma sens gdyż jeżeli będę chciał dołożyć jakiś moduł będę musiał zawszę zmieniać NEWS_MODEL aby coś dodać, a tego bym nie chciał.

Nie wiem czy może lepszym sposbem byłoby osobne pobranie newsa i komentarzy a następnie przeniesienie ich przez kontroler do widoku? np.

  1. class NEWS_CTRL{ //kontroler newsów
  2.  
  3. public function get_news(){
  4.  
  5. $view = new NEWS_VIEW;
  6.  
  7. $news_man = new NEWS_MODEL_MANAGER();
  8.  
  9. $news = $news_man->get_news($id);
  10.  
  11. $news_comment_manager = new NEWS_COMMENT_MODEL_MANAGER();
  12.  
  13. $comments = $news_comment_manager->get_comments($news->id);
  14.  
  15. $view->news($news, $comments);
  16.  
  17. }
  18.  
  19. }


wtedy oczywiście atrybut $comments z NEWS_MODEL bym wywalił.


Byłbym wdzięczny za jakieś wskazówki, bo niestety mam mało czasu żeby oddać stronkę sadsmiley02.gif