Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Route and Dispatch

[es] :: PHP :: Route and Dispatch

[ Pregleda: 1603 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

_ikac
Ivan Raznatovic
Beograd

Član broj: 290105
Poruke: 54
*.dynamic.isp.telekom.rs.



+1 Profil

icon Route and Dispatch26.02.2012. u 16:52 - pre 148 meseci
Drustvo nemogu da razumem ove dve stavke, pa bih zeleo ako neko moze da mi objasni sta radi route a sta dispach i kako se najjednostavnije radi. Ja sam radio nesto ali to nije to.

moje neko svatanje za route je:
Ja ne znam dali je ovo route ili dispacher jer ne znam koja je razlika koji sta radi?

www.site/index.php/controller/method/$key/$value/$key/$value

ja to radim pokupim $url = explode('/',$_SERVER['REQUEST_URI']); i onda je pustim kroz for petlju i dobijam controller.

Sta je tu uri, routing i dispatcher. Totalno sam zbunjen gledao sam ostale fw i nije mi jasno.

Ako moze neko lepo da mi objasni sta koji treba da sadrzi, koja je njihova funkcija i kratak delic koda ili link da ukapiram kako se to radi i da ih razlikujem. Koji se zasta koristi i ostalo..

Hvala vam unapred drugari..

[Ovu poruku je menjao _ikac dana 27.02.2012. u 15:27 GMT+1]
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.dynamic.sbb.rs.



+33 Profil

icon Re: Route and Dispach27.02.2012. u 08:28 - pre 148 meseci
Prvo nije "dispach", već dispatch... A i jel to pitaš u kontekstu nekog konkretnog framework-a, ili možda praviš neki svoj radni okvir, pa hoćeš da primeniš taj pristup?

Kako god, u najkraćim crtama, zadatak rutera bi bio da taj URI, mapira u request parametre, pri čemu su modul, kontroler i akcija ti neki parametri koji će biti od značaja dispatcher-u. Pritom se ti dobijeni parametri obično smeštaju u neku objektnu varijantu request-a, neki request objekat. Dakle ruter uzme URI, i kako god zna i ume, parsira taj string, izvuče sve te varijable i napuni request objekat. To je njegov domen rada, ništa više od toga.
Dispatcher onda dobija tako napunjenu request instancu, isčitava te parametre, i na osnovu njih instancira i trigger-uje odgovarajući action kontroler.

Konkretna realizacija tog slova "C" u MVC, pa samim tim i front controller, router, dispatcher implementacije, razlikuju se od framework-a do framework-a, ali je princip u suštini isti ili bar sličan.
 
Odgovor na temu

_ikac
Ivan Raznatovic
Beograd

Član broj: 290105
Poruke: 54
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Route and Dispatch27.02.2012. u 14:40 - pre 148 meseci
U pitanju je FW. Znam da je Dispathc progutao sam slovo(t)

Izvini Nikola ali ja sam to nekako kapitam ali nije mi jasno opet sve mi to nekako konfuzno..
Pazi moje shvatanje i kako sam ja to uradio.

Uradio sam class Router (Singleton) koji sadrzi metode
Kod mene Dispatch po mom nekom shvatanju iz googlanja sluzi samo da odradi ceo proces instanciranja, pravljenja objekata itd.
A URL klasa mi sadrzi obicne metode tipa kao base_url(), site_url(), App_url itd...

Code:
public function __construct($option=array()){ 
      //... 
}

public function index (){ 
      //... Vraca index stranu
}

public function controller(){ 
      //... Vraca Segment iz url-a  koji koristim da posle instanciram objekat
}

public function method(){ 
      //... Vraca Segment iz url-a  koji koristim da posle pozovem neku metodu vec definisanog controllera
}

public function dispatch(){ 
      //... E u dispatch raslanujem sa funkciom explode i uzimam definisani parametar(segment)
     //... Instanciram gra $controller = new $controller();
     //... Ako nepostoji controller poziva mi Index metodu da me vrati na index root
    //.... Ako se pozove neka metoda
    //.... $controller->$method
}


 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-8.sezampro.rs.



+33 Profil

icon Re: Route and Dispatch27.02.2012. u 18:10 - pre 148 meseci
A koji je framework u pitanju? Na osnovu toga što si opisao u prvom post-u, meni to liči na Zend Framework... Pročitaj onda dokumentaciju:
http://framework.zend.com/manual/en/zend.controller.router.html
http://framework.zend.com/manu...end.controller.dispatcher.html
Mislim da su tu, a i uopšte u dokumentaciji cele Controller komponente, svi ti pojmovi dosta dobro objašnjeni.

A što se te tvoje implementacije tiče, ne znam što si sve strpao u jednu klasu... Logike za rutiranje i dispatch-ovanje bi trebale da budu razdvojene, a njima bi onda trebao da upravlja neko ko kontroliše ceo proces, tj. ceo taj jedan request/response ciklus. A to bi recimo mogao da bude onaj pomenuti Front Controller. Dakle on bi najpre trebao da se obraća ruteru, prosleđujući mu request URI, a za uzvrat bi dobio recimo niz u kojem su isparsirane URI varijable. I onda bi sa tim što dobije radio dispatch-ing, koji ako se svodi samo na pozivanje određenog metoda neke kontroler klase može da bude realizovan i u sklopu Front controller-a, ili u nekoj zasebnoj klasi, ako je ta logika kompleksnija.

E sad, konkretan način na koji će to sve biti realizovano i kako će to da bude kodirano, zavisi od toga šta hoćeš da postigneš i koliko to treba da bude kompleksno... Ti npr. uopšte ne moraš tu Front Controller implementaicju da držiš u klasi, to sve može da bude odrađeno i u tom nekom index.php, na kojeg su usmereni svi zahtevi. Ne moraš uopšte ni da koristiš klase, ceo taj mehanizam može da se odradi i proceduralno. U tome i jeste poenta, što stvari treba što više apstrakovati i posmatrati ih na pravi način.

Možda je u stvari najbolje da vidiš kako je sve to urađeno u nekom MVC framework-u. A i kad smo kod toga, ne znam zašto si se uopšte i upustio u pravljenje nečeg što je već dosta puta rešeno u svim tim framework-ovima.

Takođe, preporučujem ti da prođeš ovaj tutorijal za kreiranje sopstvenog mini framework-a, iz 12 delova, kojeg je napisao Fabien Potencier, autor Symfony framework-a: http://fabien.potencier.org/ar...the-symfony2-components-part-1. To je prvo poglavlje, a tu pri vrhu imaš i linkove do svih ostalih. Baci pogled odma' na 3. i 4. poglavlje, tu baš imaš pojašnjenu tu priču sa rutiranjem, tj. match-ovanjem URI-ja, i onda pozivanjem odgovarajuće metoda - dispatch-ovanjem. Obrati pažnju da je sve to pisano za PHP 5.3, pa su tu onda kontroleri/akcije u stvari anonymous funkcije.



[Ovu poruku je menjao Nikola Poša dana 27.02.2012. u 19:29 GMT+1]
 
Odgovor na temu

_ikac
Ivan Raznatovic
Beograd

Član broj: 290105
Poruke: 54
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Route and Dispatch27.02.2012. u 19:22 - pre 148 meseci
DObar tekst, neupustam se ja u to da bi napravio nesto novo sa cime bi se ja proslavio ili reklamirao.
JEdnostavno usavrsavam sebe, pokusavam da shvatim najnovije metode objektnog orjentisanog programiranja , Pattern Design, Factory, Singleton, Refacoring, MVC, HMVC. Razlog je sto ako ja prihvatim neki projekat putem freeleance nezelim da me posle zovu za gluposti e ovo nije to kako bi trebalo, nabudzano je itd. Zelim jednostavno da sam u koraku sa php-om po najnovijim nacinima i principima.

Ajde pogledacu ovo pa cu da vidim ako nesto nebude kako treba pitacu opet..

Hvala...
 
Odgovor na temu

[es] :: PHP :: Route and Dispatch

[ Pregleda: 1603 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.