Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mvc again...
Forum PHP.pl > Forum > PHP
kicaj
Dawno mnie tu nie bylo...

Mialem przerwe w pisaniu i chcialbym wziasc sie odrazu za MVC.
Mam wiec kilka pytan, stworzylem sobie np. ArticleModel.php i ArticleView.php:
1. Jak napisac Kontroler, ktory bedzie w/w model i widok laczyl? Istnieje jeden kontroler dla calej witryny czy jeden kontroler dla kazdego modelu i widoku. Czy wywolanie akcji z ArticleModel.php jest mozliwe czy odbywa sie tylko i wylacznie poprzez Kontroler?
2. Jak w ArticleView.php przekazac wyniki do np. przegladarki. Klasa ma byc potomkiem klasy do szablonów?
3. Czy taki sposob przekazania SQL jest dobry:
  1. <?php
  2.  
  3. $db = DataBase::Connect( 'localhost',... ) // Connect = singleton
  4.  
  5. class ArticleModel
  6. {
  7. function __construct( $db ) 
  8. {
  9. $this -> db = $db;
  10. ...
  11.  
  12. ?>

Dzieki z gory
aleksander
1. ja zawsze mam jeden kontroler dla całej witryny który wywołuje porządane widoki które z kolei wywołują porządane modele (o ile potrzebne)

2. Mozesz w widoku stworzyc instancję systemu szablonów możesz ją rozszerzyć, jak Ci wygodnie.

3. proponowałbym w modelu tworzyć instancję a nie przekazywać ją w parametrze chociaż niektórzy (o ile pamiętam w pinkim Vengeanca) inicjują baze oddzielnie:)
bela
Zacznę od końca.

Cytat
3. Czy taki sposob przekazania SQL jest dobry

Przecież obiekt db nie zostanie przekazany, bo db jest argumentem konstruktora a więc zmienną lokalną w jego obrębie winksmiley.jpg Lepiej zrobić coś takiego

  1. <?php
  2. $db = DB::connect(...);
  3. $am = new ArticleModel($db); // lub new ArticleModel(&$db); dla php4
  4. ?>


Cytat
2. Jak w ArticleView.php przekazac wyniki do np. przegladarki. Klasa ma byc potomkiem klasy do szablonów?

Może, nie musi. Ja rozwiązałem to tak, że mam ViewManager, który dostaje dane o szablonach i danych które je wypełnić. Napisałem sobie też mały obiekt MySmarty, który automatycznie konfiguruje je.

Cytat
1. Jak napisac Kontroler, ktory bedzie w/w model i widok laczyl? Istnieje jeden kontroler dla calej witryny czy jeden kontroler dla kazdego modelu i widoku. Czy wywolanie akcji z ArticleModel.php jest mozliwe czy odbywa sie tylko i wylacznie poprzez Kontroler?


Najprostszy przykład.
  1. <?php
  2. $id = (int)$_GET['id'];
  3. $am = new ArticleModel($db);
  4.  
  5. $result = $am->getById($id);
  6. $av = new ArticleView();
  7. $av->setResult($result);
  8. $av->display();
  9. ?>


Tylko szkic.

Kontroler odpowiada za wykonia żądania. Czy dla każdego żądania zrobisz jeden kontroler, czy będziesz miał jeden kontroler dla wszystkich żądań to nie ma znaczenia.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.