DocumentController und FCActions als DI-Services

Dieser Bereich dient dazu, neue Features zu diskutieren und für die Entwicklung zu dokumentieren. // This area is dedicated to new features including proposals and documentation.
Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

DocumentController und FCActions als DI-Services

Beitrag von jwlighting » 26.07.2013, 13:14:11

Hallo zusammen,

ich wollte mir am Wochenende mal ISSUE#1 angucken: Erzeugung von Document-Controllern über den DI-Container

Gibt es da noch Feature-Wünsche oder Ideen zur Implementierung zu? Ich meine es gab sogar ein Proposal, habe aber nichts gefunden. Vielleicht verwechsle ich das auch.

LG :)
Jan

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: DocumentController als DI-Services

Beitrag von dr.e. » 26.07.2013, 22:18:28

Hi Jan,

schön, dass dir das Thema zusagt. Ich hatte die Idee eine Methode zu implementieren, die das Erzeugen kapselt (vermutlich in Document) und je nach Attributen des <@controller-Tags entweder den heutigen Weg oder über den
DIServiceManager
geht. Gibts du einfach ein class-Attribut an, so wird der heutige Modus verwendet, bei namespace und name kommt der DI-Container zum Einsatz.

Wenn du das Thema angehst: Doku nicht vergessen! ;)
Viele Grüße,
Christian

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: DocumentController als DI-Services

Beitrag von jwlighting » 27.07.2013, 18:48:56

Dank dir für den kurzen Gedankenaustausch.
Ich habe jetzt eine Implementierung, die entweder class als String oder namespace und servicename als Array in Document::documentController ablegt.
Über den Typ mache ich dann in ::transform() auch die Unterscheidung, welche Methode er verwenden soll.

Ich habe die Implementierung schon getestet. Schau mal bitte über den Code rüber.
Die Dokumentation folgt dann noch! :) Muss hierhin, oder?: http://adventure-php-framework.org/Seite/006-Controller

LG ;)
Jan

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: DocumentController als DI-Services

Beitrag von dr.e. » 27.07.2013, 21:13:25

Hallo Jan,

vielen Dank für deine Arbeit! :) Habe mir den Code angesehen und noch ein, zwei Dinge gefunden:
  • Die Methode Document::getDocumentController() gibt die Document-Controller-Klasse zurück. Dies funktioniert nun im Fall der Nutzung des DIServiceManager nicht mehr. Hierfür brauchen wir eine Lösung, die zumindest für die dadurch generierte Ausgabe (schaue dir mal die Nutzung der Methode an) tauglich ist.
  • Die Speicherung der Daten für den Document-Controller kannst du auch gleich direkt in $this->documentController schreiben. Z.B.:

    Code: Alles auswählen

    $this->documentController= array(
       'namespace' => $controllerAttributes['namespace']);
       'servicename' => $controllerAttributes['servicename']); 
  • Die Attribute würde ich eher (da kürzer) namespace und name nennen.
Als Lösung für das erste Thema kann ich mir durchaus vorstellen, direkt in extractDocumentController() die Instanz zu erzeugen, dann hast du in getDocumentController() kein Issue, weil du einfach ein

Code: Alles auswählen

return get_class($this->documentController); 
schreiben kannst und auch in transform() ein paar if's wegfallen.

Soweit mein Feedback. Btw: magst du dir auch noch http://tracker.adventure-php-framework. ... .php?id=57 ansehen, das könntest du in diesem Aufwasch gleich miterledigen.
Die Dokumentation folgt dann noch! :) Muss hierhin, oder?: http://adventure-php-framework.org/Seite/006-Controller
Korrekt. In der neuen Doku (siehe SVN-Pfad https://svn.code.sf.net/p/adventurephpf ... oller.html) hat sich einiges im Vergleich zur Online-Verison getan. Ich schlage daher vor, ein Kapitel anzuhängen - quasi ein Kapitel 4.
Viele Grüße,
Christian

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: DocumentController als DI-Services

Beitrag von jwlighting » 28.07.2013, 10:07:34

Die Methode Document::getDocumentController() gibt die Document-Controller-Klasse zurück. Dies funktioniert nun im Fall der Nutzung des DIServiceManager nicht mehr. Hierfür brauchen wir eine Lösung, die zumindest für die dadurch generierte Ausgabe (schaue dir mal die Nutzung der Methode an) tauglich ist.
OK, schaue ich mir an. Soweit ich weiß, ist in $this->documentController ja sonst nur der Klassenname und nicht die Instanz der Klasse abgelegt, oder?
Als Lösung für das erste Thema kann ich mir durchaus vorstellen, direkt in extractDocumentController() die Instanz zu erzeugen, dann hast du in getDocumentController() kein Issue, weil du einfach ein

Code: Alles auswählen

return get_class($this->documentController); 
schreiben kannst und auch in transform() ein paar if's wegfallen.
Dann würde ich aber vorschlagen, in beiden Fällen den DocCon in extractDocumentController() zu erzeugen und danach die Instanz in $this->documentController abzulegen. So meintest du das wahrscheinlich auch, oder?
Die Speicherung der Daten für den Document-Controller kannst du auch gleich direkt in $this->documentController schreiben. Z.B.:
Stimmt :D Hätte sich bei oben stehender Lösung dann aber ja eh erledigt.
Die Attribute würde ich eher (da kürzer) namespace und name nennen.
Das Attribut 'name' gab es dort ja schonmal, oder war es 'file'? Ich fände es jedenfalls sinnvoll, wenn man an den Attributnamen sofort erkennen kann, dass es sich um einen Service handelt. Das ist vor allem für Einsteiger, die sich bestehenden Code anschauen schlüssiger. Was hältst du von namespace und service?
Btw: magst du dir auch noch http://tracker.adventure-php-framework. ... .php?id=57 ansehen, das könntest du in diesem Aufwasch gleich miterledigen.
:D Aber #2 gucke ich mir gerne mal an ;) http://tracker.adventure-php-framework. ... w.php?id=2
Auch wenn ich mit dem Frontcontroller sonst noch nicht so vertraut bin, vielleicht hilft das ja, mal wieder das Wissen aufzufrischen.

Schönen Sonntag :)
Jan

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: DocumentController als DI-Services

Beitrag von dr.e. » 28.07.2013, 11:33:17

Hi Jan,
OK, schaue ich mir an. Soweit ich weiß, ist in $this->documentController ja sonst nur der Klassenname und nicht die Instanz der Klasse abgelegt, oder?
Korrekt.
Dann würde ich aber vorschlagen, in beiden Fällen den DocCon in extractDocumentController() zu erzeugen und danach die Instanz in $this->documentController abzulegen. So meintest du das wahrscheinlich auch, oder?
So meinte ich das, genau.
Das Attribut 'name' gab es dort ja schonmal, oder war es 'file'? Ich fände es jedenfalls sinnvoll, wenn man an den Attributnamen sofort erkennen kann, dass es sich um einen Service handelt. Das ist vor allem für Einsteiger, die sich bestehenden Code anschauen schlüssiger. Was hältst du von namespace und service?
Guter Vorschlag, nehmen wir. :)
:D Aber #2 gucke ich mir gerne mal an ;) http://tracker.adventure-php-framework. ... w.php?id=2
Auch wenn ich mit dem Frontcontroller sonst noch nicht so vertraut bin, vielleicht hilft das ja, mal wieder das Wissen aufzufrischen.
Wusste ich doch, dass wir das schon mal hatten. Hab es nur über die Suche nicht gefunden und damit neu angelegt. :roll: :D Danke für's zusammenführen!
Viele Grüße,
Christian

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: DocumentController als DI-Services

Beitrag von jwlighting » 28.07.2013, 13:00:31

Änderungen beim DocumentController-Feature sind drin: REV#2416

LG :)
Jan

PS: Bevor ichs vergesse: Document::$documentControllerNamespace wurde nicht mehr gebraucht. Ich habs entfernt.

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: DocumentController und FCActions als DI-Services

Beitrag von dr.e. » 28.07.2013, 16:00:33

Hallo Jan,

danke für die Änderungen. Gefällt mir gut. Den Rest können wir noch per Skype besprechen...
Viele Grüße,
Christian

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: DocumentController und FCActions als DI-Services

Beitrag von jwlighting » 28.07.2013, 20:04:49

Deine Anmerkungen in Skype betreffend ::transform() habe ich umgesetzt. Arbeitet jetzt direkt auf $this->documentController und prüft mit 'instanceof DocumentController' - das ist am saubersten und sichersten und sichert auch ab, dass das Interface in jedem Fall verwendet werden muss.

LG :)

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: DocumentController und FCActions als DI-Services

Beitrag von dr.e. » 28.07.2013, 22:07:46

Perfekt, danke! :)
Viele Grüße,
Christian

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: DocumentController und FCActions als DI-Services

Beitrag von dr.e. » 16.08.2013, 18:10:36

Hallo Jan,

ich habe in der Doku Stubs für das Thema angelegt. Im Code habe ich noch ein paar Änderungen vorgenommen. Ein wichtiger Punkt war das Interface DocumentController von APFDIService erben zu lassen, sonst wirft der DIServiceManager eine Exception.
Viele Grüße,
Christian

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: DocumentController und FCActions als DI-Services

Beitrag von jwlighting » 18.08.2013, 12:59:49

Hallo Christian,

vielen Dank für dein nacharbeiten. Warum ich beim Testen keine Exception bekommen habe, finde ich noch etwas merkwürdig - aber es ist durchaus logisch, das da eine hätte kommen müssen ;)

Sorry, dass ich mit den anderen Themen (Doku, FC-Actions) noch nicht weiter gekommen bin.

LG :)
Jan

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: DocumentController und FCActions als DI-Services

Beitrag von dr.e. » 18.08.2013, 14:25:41

Hallo Jan,

kein Problem. Wenn ich die Übersetzung der Services-Seite fertig habe, kümmere ich mich um die Doku (solltest du bis dahin nicht die Gelegenheit gehabt haben).

Die Implementierung der Front-Controller-Geschichte kriegen wir auch noch geregelt. :)
Viele Grüße,
Christian

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: DocumentController und FCActions als DI-Services

Beitrag von jwlighting » 18.08.2013, 23:12:03

Die Doku und die FC-Actions habe ich mir jetzt fest vorgenommen, dann mache ich das auch! 8-)

LG ;)
Jan

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: DocumentController und FCActions als DI-Services

Beitrag von dr.e. » 19.08.2013, 21:57:28

Word! :D ;)
Viele Grüße,
Christian

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast