Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Budowa kontrolera
Jarod
post 22.02.2007, 17:58:43
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Mam już prawie ukończonego frameworka. Z większych rzeczy pozostał mi do napisania kontroler. Podpatrywałem ZF, przeglądałem rózne arty znalezione na google na ten temat. Ale nadal zastanawiam się jak powinien być zbudowany kontroler. Tzn wiem co chcę osiągnąć ale nie wiem jak to podzielić na Front Controller i na kontrolery. Ogólnie chciałbym mieć możliwość wybierania modułów i akcji danego modułu na podstawie np. takiego linka:

Kod
http://serwer/module=module1/action=action1/value=1/value2=2/.../...


Możecie coś doradzić?

Ten post edytował J4r0d 22.02.2007, 18:00:25


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
NuLL
post 22.02.2007, 18:40:16
Post #2





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Zbudowales framework bez kontrolera - ROTFL biggrin.gif

A o adresowaniu - to masz wyszukiwarke i slowo ROUTER.


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Jarod
post 22.02.2007, 18:43:21
Post #3





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(NuLL @ 22.02.2007, 18:40:16 ) *
Zbudowales framework bez kontrolera - ROTFL biggrin.gif


Co Cię tak bawi?


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
devnul
post 22.02.2007, 19:32:58
Post #4





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


też nie rozumiem co w tym śmiesznego - framework raczej nie ma w definicji posiadania kontrolera - to tylko zestaw narzędzi do budowania aplikacji - nigdzie nie jest powiedziane że kontroler musi być - bo to zależne jest od zastosowanego wzorca projektowego. To tak OT - a co do tematu to chyba na wortalu był jakis artykuł na ten temat.


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
LBO
post 22.02.2007, 19:36:42
Post #5





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Kontroler to serce frameworka - można przypuszczać, że to co nazywasz frameworkiem, to kilka klas, mocniej lub luźniej ze sobą związanych, ale nie ułatwiających pisania pełnej aplikacji.
Widzisz już gdzie jest pies pogrzebany?
Go to the top of the page
+Quote Post
Jarod
post 22.02.2007, 19:58:48
Post #6





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(LBO @ 22.02.2007, 19:36:42 ) *
Kontroler to serce frameworka - można przypuszczać, że to co nazywasz frameworkiem, to kilka klas, mocniej lub luźniej ze sobą związanych, ale nie ułatwiających pisania pełnej aplikacji.

Wiem o co chodzi, ale to nie zmienia faktu, że to co napisałem jest frameworkiem (mocniej lub luźniej powiązanych ze sobą klas) pomimo tego, że nie ma jeszcze kontrolera, który ułatwia pisanie aplikacji. Zależy kto jak rozumie zasadę działania kontrolera. Dla mnie front controller ma odpalać główne akcje.

Cytat(devnul @ 22.02.2007, 19:32:58 ) *
(...)a co do tematu to chyba na wortalu był jakis artykuł na ten temat.

Wiem, czytałem dużo artów ale każdy ma inne podejście do tego.

Zastanawiam się czy zamknąć wszystko w jednej klasie czy utworzyć klasy:

Router - posiadałaby metodę pobierającą z urla nazwę: kontrolera, modułu, akcji i parametry oraz metodę tworzoną urla na podstawie otrzymanego tokenu

Dispatcher - na podstawie otrzymanego tokenu (token byłby tablicą asocjacyjną zawierającą nazwę kontrolera, modułu, akcji i parametry), który odpalałby odpowiednią akcje..


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
LBO
post 22.02.2007, 20:10:03
Post #7





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Podziel na klasy. Dzięki temu podmieniając np. Router, będziesz mógł parametry pobierać np. z konsoli a nie url'a. Tak samo dispatcher, podmieniając go akcją nie musi być metoda klasy Kontrolera, a np. klasa w folderze kontrolera biggrin.gif
Go to the top of the page
+Quote Post
DeyV
post 22.02.2007, 22:11:12
Post #8





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




kontroler to serce frameworka MVC. To może i byłaby prawda - a i tak nie do końca.
Tak więc takie ironiczne podejście jest co najmniej nie na miejscu.

Zobacz sobie temat o MVC na tym subforum. jest tam sporo rad, jak uruchamiać akcje, jak można dzielić je na moduły itp.


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
Jarod
post 23.02.2007, 17:14:40
Post #9





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Czy obiekt kontrolera akcji powinien dziedziczyć po Front Controllerze czy powinien być odrębną klasą?

Ten post edytował J4r0d 6.03.2007, 10:34:40


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
LBO
post 24.02.2007, 01:47:56
Post #10





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Cytat(J4r0d @ 23.02.2007, 17:14:40 ) *
Czy obiekt kontrolera akcji powinien dziedziczyć po Fron Controllerze czy powinien być odrębną klasą?

Dziedziczyć? A po co w kontrolerze akcji metody dispatch(), addFilter(), registerFilter() etc? smile.gif

Odrębną.
Go to the top of the page
+Quote Post
Turgon
post 24.02.2007, 10:28:52
Post #11





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Tak, ale po co stosować MVC ? Nie lepiej IPO zastosować ?


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
Strzałek
post 24.02.2007, 11:35:05
Post #12





Grupa: Przyjaciele php.pl
Postów: 384
Pomógł: 6
Dołączył: 11.09.2004
Skąd: Grodzisk Mazowiecki

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


Cytat
Tak, ale po co stosować MVC ? Nie lepiej IPO zastosować ?


Bo jest wygodne i ktoś tak chce. Przy okazji mógł byś wytłumaczyć magiczny skrót IPO ?


--------------------
Go to the top of the page
+Quote Post
Turgon
post 24.02.2007, 11:37:10
Post #13





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Input Processing Output biggrin.gif Mi to znacznie bardziej pasuje - plus jeszcze event driven i jestem w siódmym niebie smile.gif


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
Jarod
post 24.02.2007, 11:39:52
Post #14





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(LBO @ 24.02.2007, 01:47:56 ) *
A po co w kontrolerze akcji metody dispatch(), addFilter(), registerFilter() etc? smile.gif


Wiesz jakie metody zawiera bo go już anpisałeś. A ja zastanawiam się jak to zrobić..


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
LBO
post 24.02.2007, 11:51:00
Post #15





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Cytat(J4r0d @ 24.02.2007, 11:39:52 ) *
Wiesz jakie metody zawiera bo go już anpisałeś. A ja zastanawiam się jak to zrobić..


Nie kolego, ja wiem co Front Controller robi... czyli nie to, co Action Controller.
Go to the top of the page
+Quote Post
Strzałek
post 24.02.2007, 13:30:41
Post #16





Grupa: Przyjaciele php.pl
Postów: 384
Pomógł: 6
Dołączył: 11.09.2004
Skąd: Grodzisk Mazowiecki

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


Cytat
Input Processing Output biggrin.gif Mi to znacznie bardziej pasuje - plus jeszcze event driven i jestem w siódmym niebie smilingsmiley.gif


Ok, jakieś linki czy coś? Pierwsze słyszę. Po za tym wnioskując z nazwy. Input - analizujemy żądanie
Processing - realizujemy je
Output - zwracamy wynik.

Jeżeli tak to jest to samo co MVC i we wszystkich aplikacjach, inaczej się nie da. Nic odkrywczego.


J4r0d:

FrontController analizuje input (te twoje linki), i odpala kontroller który później odpala akcje. Controller napewno nie powinien dziedziczyć po FrontController, jeżeli już to na odwrót.


--------------------
Go to the top of the page
+Quote Post
Jarod
post 24.02.2007, 14:48:27
Post #17





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(Strzałek @ 24.02.2007, 13:30:41 ) *
J4r0d:

FrontController analizuje input (te twoje linki), i odpala kontroller który później odpala akcje. Controller napewno nie powinien dziedziczyć po FrontController, jeżeli już to na odwrót.

We wszystkich artykułach, które znalazłem na sieci Front Controller analizuje inputa i odpala odpowiednią akcje.

Strzałek: mógłbyś podać prosty przykład Front Controllera i Action Controllera? Prosty bo chcę załąpać jak to ugryźć. Podglądałem Rapide, ZF i jak na początek nie mogę się w tym odnaleźć..


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
Strzałek
post 24.02.2007, 14:54:13
Post #18





Grupa: Przyjaciele php.pl
Postów: 384
Pomógł: 6
Dołączył: 11.09.2004
Skąd: Grodzisk Mazowiecki

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


U mnie nie ma czegoś takiego jak action controller. U mnie jest to mniej więcej tak:


  1. <?php
  2. class FrontController {
  3.  
  4. public function dispatch(){
  5. $controller = $_GET['controller'];
  6. $action = $_GET['action'];
  7.  
  8.  
  9. $this -> perform($contrller, $action);
  10. }
  11.  
  12. public function perform($controller, $action){
  13. $c = new $controller();
  14. $c -> $action();
  15. }
  16.  
  17. }
  18.  
  19. abstract class Controller {
  20. /* .... */
  21. }
  22.  
  23. class NewsController extends Controller {
  24. public function showOneAction(){
  25.  
  26.  /* pobieramy z bazy itp itd. */
  27.  $this -> view -> render('showOne.php');
  28. } 
  29.  
  30. public function showAllAction(){
  31.  
  32.  /* pobieramy z bazy itp itd. */
  33.  $this -> view -> render('showAll.php');
  34. } 
  35.  
  36. }
  37. ?>


Powinno Cię trochę naprowadzić.


--------------------
Go to the top of the page
+Quote Post
mike
post 25.02.2007, 13:06:04
Post #19





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


~J4r0d mam coś co może Ci pomóc stworzyć swojego kontrolera.
Oto lista rzeczy za które odpowiedzialny jest FrontController w Symfony:
  • Define the core constants.
  • Locate the symfony libraries.
  • Load and initiate the core framework classes.
  • Load the configuration.
  • Decode the request URL to determine the action to execute and the request parameters.
  • If the action does not exist, redirect to the 404 error action.
  • Activate filters (for instance, if the request needs authentication).
  • Execute the filters, first pass.
  • Execute the action and render the view.
  • Execute the filters, second pass.
  • Output the response.
Mam nadzieję że Ci się przyda. Oczywiście masz dowolność w budowaniu swojego, powyższe to tylko przykład (z życia wzięty).
Go to the top of the page
+Quote Post
Jarod
post 25.02.2007, 16:33:10
Post #20





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


@mike_mech: dziękuje zawsze się przyda. Patrząc na przykład Strzałka to każda akcja to osobna klasa dziedzicząca po klasie abstrakcyjnej kontrolera.. Czyli mając w aplikacji 50 akcji to mamy 50 klas dziedziczących po klasie abstrakcyjnej ? :/


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 06:19