Ankündigung

Einklappen
Keine Ankündigung bisher.

Event Handling System

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Event Handling System

    Ich wollte hier mal kurz meine Vorstellung zum Event Handling System vorstellen und insbesondere eure Kritik und Verbesserungsvorschläge dazu hören.

    Ich hab versucht es in UML dazustellen, ob mir das gelungen ist solltet ihr mir sagen
    UML

    Schon mal Danke im Vorraus

    NecroniX

  • #2
    Template -> Command -> Request -> Event-Manager?! Irgendwie durcheinander alles.

    Kannst Du mal ein konkretes Bsp. beschreiben?

    Kommentar


    • #3
      Im Template stehen Befehle(commands) sehen ungefähr so aus "Plugin::load::FooBar", diese werden dann vonner View geparst und die Befehle einzeln an den EventManager weitergegeben, da der Command nun nen Ereigniss zur Folge haben soll. EventManager prüft, ob es zu diesem Command ein entsprechendes Event gibt(evtl schalte ich da zwischen noch eine Factory) , das ausgelöst werden könnte. Ist eins vorhanden wird die Action Methode des zurückgegeben Events ausgeführt(z.B. eben das entsprechende Plugin geladen...).

      Ich hoffe das ist nun verständlicher...

      Kommentar


      • #4
        Das ist aber kein Event, jedenfalls nicht im üblichen Sinne, z.B. des Event/Observer Patterns¹. Das Event ist schließlich ein Ereignis, auf das reagiert werden soll, keine Aktion die ausgeführt wird. Was du als Event bezeichnest kommt dem Command² noch am nächsten. Was das in der View nutzen soll ist mir allerdings schleierhaft.

        Zitat von xm22 Beitrag anzeigen
        Irgendwie durcheinander alles.
        Dem kann ich nur zustimmen.

        ¹ http://en.wikipedia.org/wiki/Observer_pattern
        ² http://en.wikipedia.org/wiki/Command_pattern
        [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
        [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

        Kommentar


        • #5
          Hi NecroniX,

          kommt mir alles sehr laienhaft vor, auch dein UML-Diagramm (ist eigentlich keins). Ist aber nicht schlimm, solang du dir etwas mehr entlocken laesst...

          Erlaueter doch mal was du vor hast und warum ("MVC reicht mir nicht aus, weil..."), was du unter den einzelnen Bezeichnungen verstehst (View, Event, Command, ..) und warum du sie fuer geeignet haelst, denn die Begriffe sind allesamt schon "belegt", weshalb ich es schwierig finde, deinen knappen Erlaeuterungen zu folgen ("vom View geparset").

          Schoenen Sonntag noch,
          Gruss, Chriz
          "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

          Kommentar


          • #6
            Das das UML-Diagramm schlecht ist war mir schon fast klar, arbeite nie mit UML, konzepiere immer alles mit Stift und Papier...

            Also wie schon gesacht es gibt ein Template, was normalen HTML Code und eben solche Passagen, ich zumindest nenne sie Command(vermutlich gibts nen passenderen Namen), wie eben "Plugin::load::FooBar" enthält.
            Dieses Template wird von der View geparst, sprich hier werden diese "Commands" aus dem Template gezogen und innen Array gepackt.

            Dieses Commands sollen jetzt etwaige Aktionen durchführen, hier in dem Beispiel eben das Plugin "FooBar" laden. Hier beginnt für mich der Teil wo ich nicht genau weiß/wusste wie ich es machen soll, daher bin ich oben zu diesem abenteuerlichen Architektur gekommen, diese ist imo wieder verworfen.

            Hab gestern Abend mal das Framework von xm22 durchgeschaut und sein Lösung im Bezug auf das Event System hat mir schon sehr gut gefallen.

            Kommentar


            • #7
              Kannst du mal konkreter werden, was waere FooBar? Eine Loginbox? Fuer mich waere das ein ViewHelper.
              "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

              Kommentar


              • #8
                Zitat von NecroniX Beitrag anzeigen
                Dieses Commands sollen jetzt etwaige Aktionen durchführen, hier in dem Beispiel eben das Plugin "FooBar" laden. Hier beginnt für mich der Teil wo ich nicht genau weiß/wusste wie ich es machen soll, daher bin ich oben zu diesem abenteuerlichen Architektur gekommen, diese ist imo wieder verworfen.
                Hier beginnt der Teil wo du dich hättest fragen sollen, was Aktionen in einem HTML-Template zu suchen haben. Du sprichst dabei von "View", ich gehe also davon aus dass du in irgendeiner Weise das MVC Pattern umsetzt. Die dadurch eigentlich beabsichtigte Trennung von Steuerung (Controller) und Darstellung (View) untergräbst du mit solchen Konstrukten wieder, womit der Sinn des ganzen etwas verloren geht.
                [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
                [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

                Kommentar


                • #9
                  @Chriz

                  Ich hab bisher ne Aufteilung, die so aussieht das ein Plugin einen Container darstellt der verschiedene Untercontainer(Module) besitzt.
                  Ein Module wäre dann z.B. eine Loginbox, diese hat ihren eigenen Controller wie eben auch das eigene Model.
                  Würde ich jetzt z.B. "Plugin::load::FooBar" aufrufen würde er das Plugin FooBar laden und das Hauptmodul anzeigen.

                  @Fab
                  Nach meiner Ansicht sind diese Commands nur Platzhalter, die später eine Logik aufrufen sollen. Die View würde nur herausfinden wo diese stehen und diese dann weiter an die entsprechenden Klassen geben(so zumindest mein Plan).

                  Kommentar


                  • #10
                    Ok so ergibt das langsam mehr Sinn, die Begrifflichkeiten waren zu Anfang ja doch sehr unklar. Klingt stark nach (view centric) HMVC. Unter dem Stichwort könntest du dich mal schlau machen, das Thema ist auch hier im Forum vieldiskutiert. AFAIK basiert auch das Framework von xm22 darauf.
                    [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
                    [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

                    Kommentar


                    • #11
                      AFAIK basiert auch das Framework von xm22 darauf.
                      HMVC ja, view centric nein.

                      @NecroniX: sofern du letzteres suchst, solltest du dir das APF näher ansehen. Dort wird das Konzept zu 100% gelebt.
                      Viele Grüße,
                      Dr.E.

                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      1. Think about software design [B]before[/B] you start to write code!
                      2. Discuss and review it together with [B]experts[/B]!
                      3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                      4. Write [I][B]clean and reusable[/B][/I] software only!
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                      Kommentar


                      • #12
                        @dr. e

                        Ich habs mir schon angesehen, fand die Idee auch interessant, wollts daher mal in Eigenregie probieren

                        Kommentar


                        • #13
                          [OT] Und wir waren deine Erfahrungen/Eindrücke hinsichtlich der HMVC-Implementierung?
                          Viele Grüße,
                          Dr.E.

                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          1. Think about software design [B]before[/B] you start to write code!
                          2. Discuss and review it together with [B]experts[/B]!
                          3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                          4. Write [I][B]clean and reusable[/B][/I] software only!
                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                          Kommentar


                          • #14
                            ich zumindest nenne sie Command(vermutlich gibts nen passenderen Namen), wie eben "Plugin::load::FooBar" enthält.
                            Dieses Template wird von der View geparst, sprich hier werden diese "Commands" aus dem Template gezogen
                            Das klingt in der Tat sehr nach dem Konzept vom APF - Wenn Du das wirklich in Form einer Template-Syntax benutzen willst, dann geht das genau in Deine Richtung.

                            Das Event-System meines Frameworks ist eigentlich nicht in erster Linie für den Aufbau einer Struktur gedacht - Dafür ist das "Node-System" da. Dieses arbeitet nach einem ähnlichen System wie im APF, allerdings auf Code- und nicht auf GUI-Basis.

                            Kommentar

                            Lädt...
                            X