Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MVC]Kontroler-Model-Widok, Kilka pytan
MateuszS
post
Post #1





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

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


Hey, mam pytania odnosnie MVC, zastanawiam sie czy kontroler i model ma dostep do widoku czy sam kontroler
http://athlan.pl/wp-content/uploads/mvc-model.png
czy
http://sysdm.googlecode.com/files/mvc.png

Kolejne pytanie: jak wyglada struktura folderow takiej aplikacji? I czy jest zalezna od powyzszych zaleznosci pomiedzy widokiem a kontrolerem i modelem?
I następne: takie proste sprawdzenie czy formularz zostal wyslany (nie chodzi o walidacje) czy nie ma byc obslugiwane w kontrolerze czy modelu?
No to jeszcze jedno: mam ksiazeczke i tam jest takie cos jak router i dispatcher, ale oczywiscie jest tam 100 linijek kodu i zero zrozumialego opisu, moglby ktos wyjasnik do czego sluza?

Nie sklamie jezeli powiem ze przelecialem juz wszystkie arty w naszym ukochanym polskim internecie ale procz zawilej teorii nie znalazlem odpowiedzi na te pytania, pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
MateuszS
post
Post #2





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

Posty w temacie
- MateuszScirka   [MVC]Kontroler-Model-Widok   27.02.2010, 21:57:36
- - LBO   Router - tłumaczy dane wejściowe użytkownika - np....   27.02.2010, 23:28:34
- - MateuszScirka   Napisales jak goscie na kursach nie wiele z tego ...   28.02.2010, 13:36:32
- - LBO   Wg mnie 1-wszy lepiej oddaje sens MVC. Co do kata...   28.02.2010, 13:42:45
- - Crozin   Co do różnych wariacji wzorca MVC: Temat: MVC Kont...   28.02.2010, 17:11:38
- - MateuszScirka   no wlasnie, dazylem do stworzenia takiej aplikacji...   28.02.2010, 17:57:25
- - LBO   Crozin, jak dla mnie, pomieszałeś trochę dispatche...   28.02.2010, 18:34:15
- - Crozin   Cytatzeby dostep do bazy miala kazda klasa itp itp...   28.02.2010, 19:42:30
- - MateuszScirka   zaczynam kumac, zaczalem czytac tematy, ktore zapo...   28.02.2010, 19:49:30
- - -=Peter=-   I tak, i nie. Zazwyczaj we frameworkach jest tak, ...   28.02.2010, 20:54:35
- - MateuszScirka   Cytatdyspozytor na podstawie parametrów routingu t...   28.02.2010, 21:15:23
- - skowron-line   Masz sobie link który wygląda powiedzmy tak. Kodin...   28.02.2010, 23:17:50
- - LBO   Tylko, żeby było jasne - to Router (a raczej różne...   28.02.2010, 23:57:33
- - MateuszScirka   Rozumiem juz chyba jak wygladaja zaleznosci pomied...   1.03.2010, 15:17:17
- - pablo89pl   Np. obadaj sobie jka to wygląda w Kohanie www.koha...   1.03.2010, 16:09:17
- - skowron-line   http://samuelsjoberg.com/archive/2007/01/url-dispa...   1.03.2010, 16:26:37
- - MateuszScirka   skomplikowana ta klasa dispatchera w tym co podałe...   1.03.2010, 16:44:26
- - LBO   Źle myślisz. zamiast uczyć się nowych technik i do...   1.03.2010, 16:50:20
- - MateuszScirka   Nie wiem jak rozwiazac problem, chce metoda __auto...   1.03.2010, 19:11:58
- - Crozin   1) Sugerowałbym skorzystać z przestrzeni nazw, żeb...   1.03.2010, 19:23:39
- - MateuszScirka   wydaje mi sie ze z nazewnictwem nie jest zle, zrob...   2.03.2010, 19:45:37
- - marcio   W klasie controller masz metode run() ktora wywolu...   2.03.2010, 23:35:23
- - MateuszScirka   Jak dam run() protected to chyba nie bede mogl jej...   3.03.2010, 18:53:54
- - marcio   Cytat(MateuszScirka @ 3.03.2010, 18:53...   4.03.2010, 11:41:39
- - MateuszScirka   No tak, rozumiem o co chodzi, powinienem dac metod...   4.03.2010, 13:02:45
- - marcio   Cytat(MateuszScirka @ 4.03.2010, 13:02...   4.03.2010, 14:16:03


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: 14.10.2025 - 07:03