| |
 |
 |
04.05.2008, 00:21
|
#1
|
Status: Erfahrener Benutzer
Registriert seit: 26.02.2007
Beiträge: 156
|
Schnellübersicht Dispatch Prozess
Hallo zusammen,
mir fehlt seit langem eine Schnellübersicht des gesamten Dispatch Prozesses des Front Controllers. Leider hab ich bisher im Web nichts dergleichen gefunden. Deswegen hab ich mich mal schnell hingesetzt und die (wie ich finde) wichtigsten Punkte in einem kleinen Diagramm notiert.
Es folgt keiner Notationsregel! Mir hats es wirklich sehr geholfen die ganzen Aufrufe der Plugins mal richtig zu verstehen. Vieleicht hilft es dem ein oder anderen auch.
---
Download:
Version 2
German Version (Black & White) - http://nethands.de/download/zfdispatchV2.pdf [V2.0]
English Version (Black & White) - Coming soon
German Version (Color) - http://nethands.de/download/zfdispatchV2color.pdf [V2.0]
English Version (Color) - Coming soon
Version 1
German Version (Color): http://nethands.de/download/zenddispatch.pdf [V1.01]
English Version (Color): http://nethands.de/download/zenddispatch_en.pdf [V1.01]
Viele Grüße,
Thorsten
__________________
Viele Grüße,
Thorsten Ruf
Geändert von saphir2k (14.07.2010 um 22:50 Uhr).
|
|
|
04.05.2008, 00:22
|
#2
|
Status: Erfahrener Benutzer
Registriert seit: 28.12.2006
Ort: Berlin
Beiträge: 8.838
|
|
|
|
04.05.2008, 00:25
|
#3
|
Status: Erfahrener Benutzer
Registriert seit: 26.02.2007
Beiträge: 156
|
Ja sowas in der Art, nur bunter 
__________________
Viele Grüße,
Thorsten Ruf
|
|
|
04.05.2008, 00:28
|
#4
|
Status: Erfahrener Benutzer
Registriert seit: 28.12.2006
Ort: Berlin
Beiträge: 8.838
|
Zitat:
Zitat von saphir2k
Ja sowas in der Art, nur bunter 
|
Im Original isses immerhin etwas Orange, das Schwarzweiß war, weil der Upload hier wegen 6kb zuviel gemeckert hat. Zuviel Farbe kann allerdings auch verwirren 
Aussm Bauch: PDF-Druckertreiber? Würde nahe legen lieber auf die Startseite zu verzichten und ansonsten als A3 quer zu drucken. So wirkts etwas zerschnibbelt.
Die URL wird bereits beim Routing zerlegt, nicht im Disptach. Genau das macht das Routing ja aus 
Plugin-PostDispatch bzw. -PreDispatch wird bei dir zwei mal aufgerufen, entsprechende Methoden vom Helper allerdings garnicht. Beide Methoden im dispatch() vom Kontroller sind falsch zugeordnet.
Muss aber sagen: Die vielen, bunten Farben machen irgendwie Spass  Kann nur "Sonstige Methoden" und Blau nicht zuordnen, was für ein System das sein soll. Im Groben für mich etwas zu detailliert. Womit hastn das gemacht?
Geändert von KingCrunch (04.05.2008 um 00:34 Uhr).
|
|
|
04.05.2008, 00:30
|
#5
|
Status: Erfahrener Benutzer
Registriert seit: 26.02.2007
Beiträge: 156
|
Zu wenige auch.  Ne quark... Werd mir deine Grafik auch ausdrucken. Dumm das ich sowas nicht früher gesehen habe. 
Der A3 Tip klingt gut. Gleich mal testen.
__________________
Viele Grüße,
Thorsten Ruf
|
|
|
04.05.2008, 00:35
|
#6
|
Status: Erfahrener Benutzer
Registriert seit: 28.12.2006
Ort: Berlin
Beiträge: 8.838
|
Zitat:
Zitat von saphir2k
Zu wenige auch.  Ne quark... Werd mir deine Grafik auch ausdrucken. Dumm das ich sowas nicht früher gesehen habe. 
Der A3 Tip klingt gut. Gleich mal testen.
|
*PLIK* hab meins edited 
|
|
|
04.05.2008, 01:13
|
#7
|
Status: Erfahrener Benutzer
Registriert seit: 26.02.2007
Beiträge: 156
|
Zitat:
Zitat von KingCrunch
Die URL wird bereits beim Routing zerlegt, nicht im Disptach. Genau das macht das Routing ja aus 
Plugin-PostDispatch bzw. -PreDispatch wird bei dir zwei mal aufgerufen, entsprechende Methoden vom Helper allerdings garnicht. Beide Methoden im dispatch() vom Kontroller sind falsch zugeordnet.
|
Aha... das fällt mir jetzt erst auf. Da hatte ich die ganze Zeit auch einen Gedankenfehler. Danke :-)
Zitat:
Zitat von KingCrunch
Muss aber sagen: Die vielen, bunten Farben machen irgendwie Spass  Kann nur "Sonstige Methoden" und Blau nicht zuordnen, was für ein System das sein soll. Im Groben für mich etwas zu detailliert. Womit hastn das gemacht?
|
Gemacht mit PowerPoint 2007 das ich echt nicht schlecht finde mittlerweile. Endlich eine brauchbare Version.
Die Farben waren mal so Gedacht: blau = normale Logik, Grün = Plugin Aufrufe und Rot = "Komplexere Prozesse".
Jetzt gibts noch Orang = Helper Aufrufe.
Hab gleich eine neue Version erstellt. Zwar noch A4 aber dafür alles auf einer Seite. UND ... noch bunter ;-)
Hoffe die Version ist besser.
Zu detailiert? Was würdest du weglassen?
__________________
Viele Grüße,
Thorsten Ruf
|
|
|
04.05.2008, 01:19
|
#8
|
Status: Erfahrener Benutzer
Registriert seit: 28.12.2006
Ort: Berlin
Beiträge: 8.838
|
Zitat:
|
Zu detailiert? Was würdest du weglassen?
|
Auf Anhieb viel mir auf, dass mich in dem ganzen Prozess das Output-Buffering eigentlich garnicht interessiert  Soll ich noch mehr suchen?
Zitat:
Die Farben waren mal so Gedacht: blau = normale Logik, Grün = Plugin Aufrufe und Rot = "Komplexere Prozesse".
Jetzt gibts noch Orang = Helper Aufrufe.
|
Nenn mich "Begriffsstutzig", aber auf Anhieb ist mir "normal" und "komplex" nicht ganz klar  Naja, eigentlich schon, aber es kann für Irritationen sorgen  Vielleicht wäre (zumindest vom Begriff her) eine Unterscheidung, wann eine Methode etwas selbst macht, und wann es eine fremde Methode aufruft, interessant?
Zitat:
|
Gemacht mit PowerPoint 2007 das ich echt nicht schlecht finde mittlerweile. Endlich eine brauchbare Version.
|
Sieht echt nett aus. Ich versuch mich zur Zeit an Visio, aber das säuft ständig ab 
|
|
|
04.05.2008, 01:34
|
#9
|
Status: Erfahrener Benutzer
Registriert seit: 26.02.2007
Beiträge: 156
|
Zitat:
Zitat von KingCrunch
Auf Anhieb viel mir auf, dass mich in dem ganzen Prozess das Output-Buffering eigentlich garnicht interessiert  Soll ich noch mehr suchen? 
|
Gerne doch
Zitat:
Zitat von KingCrunch
Nenn mich "Begriffsstutzig", ...
|
Nein, das wäre anmassend ... zumal ich auch da selbst Erklärungsschwierigkeiten habe.
Zitat:
Zitat von KingCrunch
aber auf Anhieb ist mir "normal" und "komplex" nicht ganz klar  Naja, eigentlich schon, aber es kann für Irritationen sorgen  Vielleicht wäre (zumindest vom Begriff her) eine Unterscheidung, wann eine Methode etwas selbst macht, und wann es eine fremde Methode aufruft, interessant?
|
Mit "komplex" (man beachte die Anführungszeichen!) meinte ich eigentlich so wie du geschrieben hast "Zugriff auf andere Klasse". Wobei ich dann den Call der Action Methode nicht mehr einfärben dürfte.
Zitat:
Zitat von KingCrunch
Sieht echt nett aus. Ich versuch mich zur Zeit an Visio, aber das säuft ständig ab 
|
Visio ist auch was feines. Probleme mit der Stabilität hatte ich bisher in der Firma noch nicht. Zuhause hab ich halt "nur" Office 2007 und da ist kein Visio bei.
__________________
Viele Grüße,
Thorsten Ruf
|
|
|
04.05.2008, 22:03
|
#10
|
Status: Erfahrener Benutzer
Registriert seit: 26.02.2007
Beiträge: 156
|
Nun leicht überarbeitet mit Request Prozess.
__________________
Viele Grüße,
Thorsten Ruf
|
|
|
05.05.2008, 18:29
|
#11
|
Status: Neuer Benutzer
Registriert seit: 29.04.2008
Ort: Wien
Beiträge: 5
|
fetten dank für diese übersicht. gefällt mir sehr gut!
|
|
|
06.05.2008, 10:11
|
#12
|
Status: Erfahrener Benutzer
Registriert seit: 28.12.2006
Ort: Berlin
Beiträge: 8.838
|
Da hat ers doch tatsächlich still und heimlich in A3 überarbeitet  Auf einer Seite find ichs nun wesentlich übersichtlicher. Mir gefällts. Is irgendwie lesbarer, als meins. Falls ich noch Fehler finde, meld ich mich.
Edit:
Wenn du zuviel Zeit hast, kannst du ja noch einzeichnen, wo sich der try-catch-Block befindet  Das hilft bei Exceptions heraus zu finden, was übersprungen und was danach noch bearbeitet wird. Ein Block liegt direkt vorm Plugin- routeStartup bis (einschließlich) der do-while-Schleife, ein zweiter liegt um routeShutdown der Plugins. Die Aussage davon: routeShutdown() wird auch ausgeführt, wenn irgendwo vorher eine Exception geflogen ist.
Geändert von KingCrunch (06.05.2008 um 11:00 Uhr).
|
|
|
06.05.2008, 10:57
|
#13
|
Status: Erfahrener Benutzer
Registriert seit: 30.12.2006
Beiträge: 2.017
|
Zitat:
|
Zitat von KingCrunch
Falls ich noch Fehler finde, meld ich mich.
|
Oder ich...!
Ist nur ein kleiner Fehler und einfach zu beheben:
Zitat:
|
Anhand der Route können nun alle Parameter aus der URL bestimmt werden (Module, Controller, Action, …)
|
Das ist nicht ganz richtig! So ist es besser: "Anhand der Route können nun alle Parameter bestimmt werden (Module, Controller, Action, …)"
Aber ansonsten eine feine Sache. Danke!
|
|
|
06.05.2008, 23:14
|
#14
|
Status: Erfahrener Benutzer
Registriert seit: 26.02.2007
Beiträge: 156
|
So und weil noch Platz auf der Seite ist hab ich noch den Helper Broker mitaufgenommen. Das hilft evtl. beim verstehen der Action Helper.
@Kaiuwe: Hab den Fehler korrigiert. danke
@KingCrunch: Ne is immernoch A4 ;-) ABER mit kleinerer Schrift. Habs gerade so groß gemacht das es noch auf nem Heimdrucker ohne Lupe druckbar ist.
Die Idee mit den try - catch blöcken hab ich direkt mal aufgenommen. Allerdings hab ich nur um den dispatchLoopShutdown den zweiten Block gefunden.
__________________
Viele Grüße,
Thorsten Ruf
|
|
|
07.05.2008, 00:10
|
#15
|
Status: Erfahrener Benutzer
Registriert seit: 28.12.2006
Ort: Berlin
Beiträge: 8.838
|
Edit2: Missverständnis
Zitat:
|
Die Idee mit den try - catch blöcken hab ich direkt mal aufgenommen. Allerdings hab ich nur um den dispatchLoopShutdown den zweiten Block gefunden.
|
Genau den meinte ich  Jetz wo dus sagst: Hab routeShutdown geschrieben ^^ Gute Idee übrigens mit den roten Rahmen. Damit bleibts übersichtlich
Der Andere is direkt darunter
Edit:
PHP-Code:
try { /** * Route request to controller/action, if a router is provided */
/** * Notify plugins of router startup */ $this->_plugins->routeStartup($this->_request);
// Ne Menge Code /** * Attempt to dispatch the controller/action. If the $this->_request * indicates that it needs to be dispatched, move to the next * action in the request. */ do {
// Noch mehr Code
$this->_plugins->postDispatch($this->_request); } while (!$this->_request->isDispatched()); } catch (Exception $e) { if ($this->throwExceptions()) { throw $e; }
$this->_response->setException($e); }
/** * Notify plugins of dispatch loop completion */ try { // DA ISSER :D $this->_plugins->dispatchLoopShutdown(); } catch (Exception $e) { if ($this->throwExceptions()) { throw $e; }
$this->_response->setException($e); }
Geändert von KingCrunch (07.05.2008 um 00:24 Uhr).
|
|
|
07.05.2008, 08:55
|
#16
|
Status: Erfahrener Benutzer
Registriert seit: 26.02.2007
Beiträge: 156
|
Haben wir also das gleiche gemeint.
Danke. Durch die einfache Übersicht hab ich selbst schon einiges dazugelernt. ;-)
__________________
Viele Grüße,
Thorsten Ruf
|
|
|
07.05.2008, 08:57
|
#17
|
Status: Erfahrener Benutzer
Registriert seit: 26.02.2007
Beiträge: 156
|
Ups ich sehe gerade das der letzte try-catch block gar nicht mehr zu sehen ist auf dem Diagramm. Mist, ist eine Ebene zu tief ;-) werd ich heute Abend schnell korrigieren.
__________________
Viele Grüße,
Thorsten Ruf
|
|
|
09.05.2008, 21:53
|
#18
|
Status: Erfahrener Benutzer
Registriert seit: 26.02.2007
Beiträge: 156
|
Ok, neue Version ist nun Online. Wenn noch Fehler drin sind, bin ich immer für Feedback Dankbar
__________________
Viele Grüße,
Thorsten Ruf
|
|
|
21.08.2008, 15:19
|
#19
|
Status: Erfahrener Benutzer
Registriert seit: 28.12.2006
Ort: Berlin
Beiträge: 8.838
|
Mag das Thema mal jemand sticken? (Sagt man das so?  )
|
|
|
21.08.2008, 16:15
|
#20
|
Status: Erfahrener Benutzer
Registriert seit: 12.04.2007
Beiträge: 1.046
|
Cool,. ein mit Garn gesticktes Wandbild des Dispatch-Prozesses. 
Kann hier überhaupt jemand sticken? Ich kann es nicht (auch nicht stricken).
 Remi
|
|
|
| Themen-Optionen |
|
|
| Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist Aus.
|
|
|
| |