Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V  < 1 2  
Reply to this topicStart new topic
> [MVC]Kontroler-Model-Widok, Kilka pytan
MateuszS
post
Post #21





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


wydaje mi sie ze z nazewnictwem nie jest zle, zrobilem sobie taki config ze stalymi

  1. /* Glowna sciezka do aplikacji */
  2. define("ROOT", realpath(dirname(__FILE__) . "/../../"));
  3.  
  4.  
  5. /* Klasy kontrolerow */
  6. define("CONTROLLERS", ROOT . "/app/controllers/");
  7.  
  8.  
  9. /* Klasy modeli */
  10. define("MODELS", ROOT . "/app/models/");
  11.  
  12.  
  13. /* Klasy widoku */
  14. define("VIEW", ROOT. "/app/view/");
  15.  
  16.  
  17. /* Koncowka pliku klasy */
  18. define("FCLASS", ".class.php");


i w sumie __autoload() dziala elegancko, moge sie teraz odwolac do dowolnej klasy w kazdej klasie ktorej chce (oczywiscie oby tylko zgodnie z MVC)

//02.03

Hey, postanowiłem coś SPRÓBOWAĆ napisać w oparciu o MVC, puki co mam VC, napisałem bardzo prosty system wybierania szablonu, ustawiania i uruchamiania aplikacji, wiadomo, teraz na nic się to nie nada, ale chodzi mi to o samą metodę a raczej metody, czy dobrze są ustawione, czy kontroler dobrze jest napisany itp. Jezeli cos jest zle, a pewnie tak, to prosze o jakies podpowiedzi jak to poprawic. Po poprawie dorzuce model. Pozdro

index.php
  1. <?php
  2.  
  3. require_once("app/config/config.php");
  4.  
  5. function __autoload($filename) {
  6. if(require_once(CONTROLLERS . $filename . FCLASS)) return true;
  7. if(require_once(MODELS . $filename . FCLASS)) return true;
  8. if(require_once(VIEW . $filename . FCLASS)) return true;
  9. }
  10.  
  11. try {
  12.  
  13. $ob = new Controller();
  14. $ob->run();
  15.  
  16.  
  17. } catch(Exception $e) {
  18. echo "Blad: ".$e->getMessage();
  19. }
  20. ?>


app/controllers/ViewController.class.php
  1. <?php
  2.  
  3. class viewController
  4. {
  5. public $themeFolder;
  6. public $themeDirectory;
  7.  
  8. public function theme($folder)
  9. {
  10. $dir = VIEW . $folder;
  11. if(@!opendir($dir))
  12. throw new Exception("Nie ma stylow w podanym folderze");
  13.  
  14. $this->themeFolder = $folder;
  15. $this->themeDirectory = $dir;
  16.  
  17. }
  18.  
  19. public function getTheme()
  20. {
  21. return $this->themeFolder;
  22. }
  23.  
  24. public function getThemeDir()
  25. {
  26. return $this->themeDirectory;
  27. }
  28.  
  29. public function display($file)
  30. {
  31. if(@!include($this->getThemeDir() . "/" . $file))
  32. throw new Exception("Nie znaleziono pliku widoku (".$file.")");
  33. }
  34.  
  35. }
  36.  
  37. ?>


app/controllers/Controller.class.php (to moglbym wrzucic do jakiegos folderu Core np. ale czekam puki co na opinie
  1. <?php
  2.  
  3. class Controller
  4. {
  5. public $model;
  6. public $view;
  7.  
  8. public function __construct()
  9. {
  10. $this->view = new viewController;
  11. // + obiekt modelu
  12. }
  13.  
  14. public function setTheme()
  15. {
  16. $this->view->theme("theme1");
  17. }
  18.  
  19. public function setHome()
  20. {
  21. $this->view->display("form.phtml");
  22. }
  23.  
  24. public function run()
  25. {
  26. $this->setTheme();
  27. $this->setHome();
  28.  
  29. }
  30.  
  31. }
  32.  
  33. ?>


app/view/theme1/form.phtml
  1. <form action="index.php" method="POST">
  2. <input type="submit" name="wyslij" value="Zaloguj" />
  3. </form>
Go to the top of the page
+Quote Post
marcio
post
Post #22





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

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


W klasie controller masz metode run() ktora wywoluje 2 publiczne metody ale je daj na protected lub private jesli klasa ma byc "final" bo jak nie to sie mija z celem.
Modelu i widoku raczej nie ustawiaj na sztywno do jednego atrybutu jak cos daj chociac do array zebys mogl korzystac z kilku modeli jesli bedzie taka potrzeba.
Go to the top of the page
+Quote Post
MateuszS
post
Post #23





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Jak dam run() protected to chyba nie bede mogl jej wywolac z poza klasy nie? a przeciez musze ja wywolac poza klasa.

Ten post edytował MateuszScirka 3.03.2010, 19:02:33
Go to the top of the page
+Quote Post
marcio
post
Post #24





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

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


Cytat(MateuszScirka @ 3.03.2010, 18:53:54 ) *
Jak dam run() protected to chyba nie bede mogl jej wywolac z poza klasy nie? a przeciez musze ja wywolac poza klasa.

http://pl.wikipedia.org/wiki/Hermetyzacja
Czy ja mowilem o metodzie run().... nie.Poczytaj a bedziesz wiedzial o co kaman.
Go to the top of the page
+Quote Post
MateuszS
post
Post #25





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


No tak, rozumiem o co chodzi, powinienem dac metodom setTheme i setHome protected. Poza tym co zmienic itp?
Go to the top of the page
+Quote Post
marcio
post
Post #26





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

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


Cytat(MateuszScirka @ 4.03.2010, 13:02:45 ) *
No tak, rozumiem o co chodzi, powinienem dac metodom setTheme i setHome protected. Poza tym co zmienic itp?


Nom wlasnie o to mi chodzi a tak na reszte nie lukalem.
Go to the top of the page
+Quote Post

2 Stron V  < 1 2
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.06.2026 - 00:51