Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]MVC dziedziczenie
Szymciosek
post
Post #1





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Czy któraś z klas: Model, View czy Controller powinna po sobie dziedziczyć ?
Pytam, bo widziałem przykłady bez dziedziczenia i z dziedziczeniem i wolę zapytać (IMG:style_emoticons/default/smile.gif)

Drugim pytaniem, na które też znalazłem kilka odpowiedzi to przełączanie widoków.
Uruchamiam index.php czyli ten podstawowy plik, a w nim uruchomienie kontrolera, który natomiast uruchamia model i widok...
Fajnie, ale co dalej ? Na razie mam zrobione www.xx.pl/index.php?view=contact i ta zmienna view jest sprawdzana w switch/case i tam mam include odpowiedni widok i uruchomienie klasy danego widoku
  1. case 'contact' :
  2. include_once('views/contact_view.php');
  3. $this->view = new Contact_View;
  4. break;


W view mam stworzone jakieś menu np
  1. private function createMenu()
  2. {
  3. echo '<a href="?view=index">Index</a><br />
  4. <a href="?view=contact">Contact</a><br /><hr />';
  5. }


Ale czy nie ma lepszego sposobu na to np przez pominięcie get czy coś ? Wiem, że jeszcze można ustawić routery na www.xx.pl/controller/action/param i wtedy tworzę kontrolery (ilość zależna od podstron), które uruchamiają różne widoki, ale to w formie takiego uproszczenia.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Szymciosek
post
Post #2





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Czyli całe parsowanie url musi się odbywać w index.php, a później wybieram kontroler ?

Na razie mam tak:
index.php
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Untitled Document</title>
  6. </head>
  7. <body>
  8.  
  9. <p>MVC PHP Test</p>
  10. <?php
  11. include_once("controllers/controller.php");
  12.  
  13. $request = $_GET['view'];
  14. $Controller = new Controller($request);
  15. ?>
  16.  
  17. </body>
  18. </html>


controller.php
  1. <?php
  2.  
  3. class Controller
  4. {
  5. public $request;
  6. public $view;
  7.  
  8. public function __construct($request)
  9. {
  10. $this->request = $request;
  11.  
  12. $this->displayView();
  13. }
  14.  
  15. private function displayView()
  16. {
  17. switch($this->request)
  18. {
  19. case 'index' :
  20. include_once('views/index_view.php');
  21. $this->view = new Index_View;
  22. break;
  23. case 'contact' :
  24. include_once('views/contact_view.php');
  25. $this->view = new Contact_View;
  26. break;
  27. default :
  28. include_once('views/index_view.php');
  29. $this->view = new Index_View;
  30. }
  31. }
  32. }
  33.  
  34. ?>
  35. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  36. <html xmlns="http://www.w3.org/1999/xhtml">
  37. <head>
  38. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  39. <title>Untitled Document</title>
  40. </head>
  41.  
  42. <body>
  43. </body>
  44. </html>


index_view.php
  1. <?php
  2.  
  3. class Index_View
  4. {
  5. public function __construct()
  6. {
  7. $this->createMenu();
  8. $this->display();
  9. }
  10.  
  11. private function createMenu()
  12. {
  13. echo '<a href="?view=index">Index</a><br />
  14. <a href="?view=contact">Contact</a><br /><hr />';
  15. }
  16.  
  17. private function display()
  18. {
  19. echo 'This is Index';
  20. }
  21. }
  22.  
  23. ?>
  24. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  25. <html xmlns="http://www.w3.org/1999/xhtml">
  26. <head>
  27. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  28. <title>Untitled Document</title>
  29. </head>
  30. <body>
  31. </body>
  32. </html>


contact_view.php
  1. <?php
  2.  
  3. class Contact_View
  4. {
  5. public function __construct()
  6. {
  7. $this->createMenu();
  8. $this->display();
  9. }
  10.  
  11. private function createMenu()
  12. {
  13. echo '<a href="?view=index">Index</a><br />
  14. <a href="?view=contact">Contact</a><br /><hr />';
  15. }
  16.  
  17. private function display()
  18. {
  19. echo 'This is Contact';
  20. }
  21. }
  22.  
  23. ?>
  24. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  25. <html xmlns="http://www.w3.org/1999/xhtml">
  26. <head>
  27. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  28. <title>Untitled Document</title>
  29. </head>
  30. <body>
  31. </body>
  32. </html>


Niby działa i chyba ok, modelu jeszcze nie robiłem, bo dopiero zaczynam z mvc coś więcej.
Chodzi mi o to czy jest inna metoda na to niż:
  1. $request = $_GET['view'];


Pisałem wcześniej o routerach, które mogę ustawić na kontrolery, ale nie umiem tego jeszcze.
Go to the top of the page
+Quote Post

Posty w temacie
- Szymciosek   [PHP]MVC dziedziczenie   26.06.2012, 12:40:54
- - nospor   CytatPytam, bo widziałem przykłady [....] z dziedz...   26.06.2012, 12:43:25
- - Szymciosek   http://www.phppatterns.com/docs/design/arc...troll...   26.06.2012, 12:45:32
- - nospor   1) Po kodzie widać że jest to bardzooooo stary kod...   26.06.2012, 12:52:30
- - Szymciosek   A co z przełączaniem widoków ? Jakie są sposoby na...   26.06.2012, 12:53:37
- - krzywy36   zdefiniuj "przełączanie widoków". Parsuj...   26.06.2012, 13:18:52
- - Szymciosek   Czyli całe parsowanie url musi się odbywać w index...   26.06.2012, 13:28:22
- - krzywy36   Wydaje mi się, że źle pojmujesz MVC. MVC to sama i...   26.06.2012, 13:35:13
- - Szymciosek   Czyli co ? MVC nie nadaje się do takich rzeczy jak...   26.06.2012, 13:43:44
- - !*!   CytatCzyli całe parsowanie url musi się odbywać w ...   26.06.2012, 13:47:23
- - Szymciosek   Nie buduję FW , ale chciałem po prostu za pomocą M...   26.06.2012, 13:58:00
- - !*!   Tak, GET to najprostsze wyjście. Jednak to co prez...   26.06.2012, 14:00:58
- - krzywy36   Cytat(Szymciosek @ 26.06.2012, 14:43...   26.06.2012, 14:02:39
- - !*!   CytatHmm, $_GET i routery, nie rozumiem za ba...   26.06.2012, 14:06:32
- - Szymciosek   !*!, gdzie mam w takim razie tworzyć menu ...   26.06.2012, 14:08:50
- - !*!   Nie znajdziesz dokładnego opisu MVC, bo MVC jest t...   26.06.2012, 14:16:58
- - Szymciosek   To może chociaż jakieś przykłady z życia wzięte ? ...   26.06.2012, 14:42:10
- - !*!   http://phpedia.pl/wiki/MVC   26.06.2012, 14:58:10
- - Szymciosek   To widziałem w sumie, ale czy to się jakoś nadaje ...   26.06.2012, 15:03:38
- - !*!   CytatTo widziałem w sumie, ale czy to się jakoś na...   26.06.2012, 15:06:56
|- - Szymciosek   Cytat(!*! @ 26.06.2012, 16:06...   26.06.2012, 15:12:59
- - !*!   Widzisz, za bardzo kombinujesz i nie widzisz ideii...   26.06.2012, 15:22:05
- - Dipter   Musisz wybrać inną logikę całej tej aplikacji, bo ...   26.06.2012, 15:25:40
- - Szymciosek   Na FW myślę, że za wcześnie jeszcze... Brałem się ...   26.06.2012, 15:29:09
- - Dipter   CytatNp jakie inne wzorce ? Nie chcę dużego FW, ch...   26.06.2012, 15:36:20
- - !*!   Zobacz sobie CodeIgniter, chyba najprostszy FW jak...   26.06.2012, 15:41:08
- - Szymciosek   Na razie zostańmy przy samej czystej stronie z tre...   26.06.2012, 15:42:00
- - !*!   Implementacja MVC do takich prostych rzeczy jest p...   26.06.2012, 15:45:31
- - Szymciosek   Tak view to widok, a o czym pisaliśmy na początku ...   26.06.2012, 15:52:45
- - !*!   GEt nie może być widokiem, ani modelem. Czytaj uwa...   26.06.2012, 15:58:13
- - Szymciosek   Mógłbyś jakiś przykład całego mvc dać ? Skąd Pages...   26.06.2012, 16:01:57
- - !*!   Pages to kontroler, View to przykładowo Twoja klas...   26.06.2012, 16:04:46
- - Szymciosek   [PHP] pobierz, plaintext <!DOCTYPE html PUBLIC ...   26.06.2012, 16:20:55
- - krzywy36   popatrz na ten kod i zastanów się czy logika progr...   26.06.2012, 17:01:18
- - Szymciosek   Krzywy, próbuję to ogarnąć, dopiero teraz, ale jak...   26.06.2012, 17:58:37
- - !*!   CytatTak ? Tylko co dalej ? A gdzie odwołałeś si...   26.06.2012, 18:34:48
- - Szymciosek   Witam ponownie, siadłem i stworzyłem coś takiego: ...   26.06.2012, 19:25:36
- - krzywy36   tak na szybko: [PHP] pobierz, plaintext if ($u...   26.06.2012, 19:41:08
- - Szymciosek   A reszta jak ? Dobrze już to by było takie coś ? C...   26.06.2012, 19:46:58
- - krzywy36   dziwnie widoki obsługujesz, ale to juz wizja progr...   26.06.2012, 19:57:54
- - Szymciosek   Co do Twojego template, to też widziałem takie kla...   27.06.2012, 11:48:59


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: 5.10.2025 - 04:54