Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [OOP][MVC]Wspolpraca Router i Controller
marcio
post
Post #1





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

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


WItam na potrzeby wlasne jestem zmuszony nauczyc sie OOP i Mvc poniewaz chce wejsc na praktyke do firmy znajomego ale powiedzial mi ze zanim pomoze mi sie nauczyc jego Framework'a musze poznac dobrze OOP(co jak narazie dobrze mi nie wychodzilo (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ) i Wzorzec MVC:
Index.php
  1. <?php
  2.  
  3. include_once('config.php');
  4. include_once('base/autoload.php');
  5.  
  6. $control = new BaseController();
  7. echo $control -> code;
  8.  
  9. ?>

I tak wyglada Index (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) a tu 2 klasy ktore powinny mi pomoc w zarzadzaniu wszystkimi modulami jakie maja zostac wywolane i ich akcje:
Klasa Router -> http://rafb.net/p/uvyyUI12.html
Klasa Kontrolera -> http://rafb.net/p/303AWO83.html
W komentarzach opisalem o co mi glownie chodzi nie chcialem wklejac tu kodu bo zauwazylem ze nie zawsze jest on czytelny na forum co moze zniechecic pare osob na krotka analize moje skromnego kodu.

Ogolnie czy jest to good napisane moze dzialac(w sensie generalnym na wieksza skale) czy jest cos co byscie zmienili/poprawili(napewno jest (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ).

I mam jeszcze jedno pytanie czytalem prawie wszystkie watki tu na forum i nie tylko dotyczace MVC wiem jak to dziala to ma robic Kontroler/Widok/Model jednak nie wiem zabardzo jak po wywolaniu odpowiedniej klasy i jej akcji pobrac dane za pomoca modelu wyslac do Widoku "obrobic" i zwrocic, u mnie to bedzie dzialalo troche inacze kontroler modulu bedzie pelnil role Modelu bo glowny kontroler ma wszystko robic i potem jest widok.

I mialbym dla was prosbe czy ktos z was moglby zrobic mi przyklad np prostej klasy(Modele) ktory pobierze news i jak mialby wyslac dane(w postaci zmiennych jak narazie bez szablonow) do Widoku zebym tylko zrozumial jak ma to dzialac np:
  1. <?php
  2.  
  3. class front {
  4.  
  5. private $db;
  6. private $sql;
  7. private $output;
  8.  
  9. public function __construct() {
  10.  
  11.  $this -> output = array();
  12.  
  13.  if($this -> db = mysql_connect('****', '*****', '****')) mysql_select_db('marcios');
  14.  
  15. }
  16.  
  17.  
  18. public function ShowNews() {
  19.  
  20.  $this -> sql = 'select * from news limit 3';
  21.  $data = mysql_query($this -> sql, $this -> db);
  22.  
  23. while($tab = mysql_fetch_assoc($data))
  24.  
  25. foreach($tab as $key => $value) $this -> output[$key] .= $value;
  26.  
  27.  return $this -> output; //albo cos innego nie wiem zapis do jakiego pola czy cos
  28.  
  29.  }
  30.  
  31. public function __destruct() {
  32.  
  33.  mysql_close($this -> db);
  34.  
  35.  }
  36. }
  37.  
  38. ?>

I jak no teraz widok ma odebrac dane i je np przeparsowac lub wyswietlic?

P.S oczywiscie Url powinien wygladac: www.costam.pl/index.php/news,ShowNews
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Cytat
WItam na potrzeby wlasne jestem zmuszony nauczyc sie OOP i Mvc poniewaz chce wejsc na praktyke do firmy znajomego ale powiedzial mi ze zanim pomoze mi sie nauczyc jego Framework'a musze poznac dobrze OOP(co jak narazie dobrze mi nie wychodzilo biggrin.gif) i Wzorzec MVC:


Jeśli jesteś zmuszony to źle. Naprawdę polecam "PHP5 Obiekty wzorce narzędzia" jako podstawę do wszelkiej nauki OOP. Zrozum kolegów wyżej - mają dość tłumaczenia komuś czegoś, co może dowiedzieć się sam. Sam musisz to zrozumieć, a to przyjdzie po wielu dniach i nieprzespanych nocach. "Zaskoczysz", to zobaczysz.
Router, to wspólna nazwa dla klas, które mają wspólny interfejs (czyli metody) i wykonują to samo zadanie, tylko na różne sposoby. Chodzi o adresy URL, które jak wiesz mogą wyglądać różnie.
index.php?costam=innecos&kolejnecos=następnecos
/newsy/hello_world
/hello_world.html
/zmienna/wartosc/zmienna2/wartosc2

Co więc robi router? Zamienia adresy URL na konkretne wartości żądania. Takie żądanie składa się z wielu parametrów, ale podstawowe, które występują w praktycznie każdym FW, to moduł i akcja do uruchomienia. Zauważ tylko, że to jest jedyne, co on robi. Nic ponadto. Oczywiście musi jakieś wyniki udostępniać. Te wyniki muszą być rozumiane przez inny obiekt - Dispatcher, który bierze wyniki działania Routera i tłumaczy sobie te parametry na konkretne elementy systemu (pliki, klasy, akcje), po czym uruchamia akcję i przydziela jej zasoby*. Zobacz: http://pl.wikipedia.org/wiki/Dyspozytor
http://hillside.net/plop/plop2001/accepted...ernandez0_1.pdf
Bez solidnej teorii nie ruszysz, pamiętaj o tym!

Pozdrawiam


@LBO - ja tak widzę rolę Dispatchera, choć nie wiem, czy nie dokonuję nadinterpretacji. Można wydzielić jeszcze więcej obiektów przecież (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie
- marcio   [OOP][MVC]Wspolpraca Router i Controller   18.03.2009, 23:19:54
- - LBO   W OOP istnieje takie pojęcie jak "Separation ...   18.03.2009, 23:38:54
- - Orkan   a tutaj wersja z obrazkami http://www.symfony-pro...   19.03.2009, 00:01:43
- - marcio   Czyli podsumuwyjac bo nie bardzo rozumiem co macie...   19.03.2009, 00:22:23
- - Orkan   podsumowujac, to moim zdaniem masz troche nie ten ...   19.03.2009, 00:33:49
- - LBO   Cytat(marcio @ 19.03.2009, 00:22:23 )...   19.03.2009, 09:41:39
- - marcio   Cytat(Orkan @ 19.03.2009, 00:33:49 ) ...   19.03.2009, 15:16:47
|- - Orkan   Cytat(marcio @ 19.03.2009, 17:16:47 )...   21.03.2009, 00:18:14
- - pejott   O dzizys, jak Router może dziedziczyć po Dispatche...   19.03.2009, 15:40:45
- - marcio   CytatO dzizys, jak Router może dziedziczyć po Disp...   19.03.2009, 16:03:42
|- - mike   Cytat(marcio @ 19.03.2009, 16:03:42 )...   19.03.2009, 16:17:33
- - pejott   Hehe, zastanów się co to za różnica ?   19.03.2009, 16:12:17
- - marcio   Moze i nie ma ale z tego co napisal @Orkan to wlas...   19.03.2009, 16:15:23
- - pejott   Ja nie widzę tam nic na temat dziedziczenia. Zast...   19.03.2009, 16:19:31
- - marcio   No ok ale jesli ktos chce na serio pomoc to chyba ...   19.03.2009, 16:27:56
- - LBO   Cytat(marcio @ 19.03.2009, 16:27:56 )...   19.03.2009, 20:09:21
- - Cysiaczek   CytatWItam na potrzeby wlasne jestem zmuszony nauc...   20.03.2009, 19:31:50
- - marcio   Myslalem nad kupnem tego: http://helion.pl/ksiazki...   20.03.2009, 23:04:05
|- - plurr   Cytat(marcio @ 20.03.2009, 23:04:05 )...   21.03.2009, 08:51:49
- - LBO   Cytat(Cysiaczek @ 20.03.2009, 19:31:5...   21.03.2009, 00:56:25
- - erix   CytatPHP nie kopiuje obiektow tylko tworzy aliasy,...   21.03.2009, 11:52:56


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: 17.10.2025 - 10:31