Ankündigung

Einklappen
Keine Ankündigung bisher.

Mein MVC-Tutorial

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

  • Mein MVC-Tutorial

    Hallo,
    ich schreibe zur Zeit an einem Tutorial über MVC-Frameworks und wollte fragen, wie ihr es findet.
    Es ist noch nicht fertig. Zur Zeit gibt es noch keine Views und auch keine Models, nur Controller

    Ich freue mich sowohl über Feedback zum Tutorial als auch zum Framework an sich.

    MfG
    Simon

    PS.: Link zum ersten Kapitel: http://www.net-developers.de/2008/08...rk-einfuhrung/

    EDIT: Dass die Sonderzeichen in meinen Artikeln nicht richtig dargestellt werden, weiß ich. Ich bin am Suchen nach einer Lösung.
    23
    1 - Super
    8,70%
    2
    2
    4,35%
    1
    3 - Geht so
    17,39%
    4
    4
    21,74%
    5
    5
    4,35%
    1
    6 - Schlecht
    43,48%
    10

  • #2
    Ein unfertiges Tutorial bewerten :/ wozu?

    Was mir aufgefallen ist
    • Request und Response nicht abstrahiert, Beschränkung auf HTTP
    • Nur ein Controller und eine Action möglich (schlecht)
    • FW::isValid nicht geklärt
    • Singleton in jeder Klasse einzeln implementiert (statt generisch)
    • Wann soll dieError() zum Einsatz kommen (sonnst wird ja eine Fehlerseite angezeigt, was auch gut so ist)



    PS: Warum nimmst du in deinem Wordpress Plugin nicht einfach html_entities() raus?
    "Nobody is as smart as everybody" - Kevin Kelly
    — The best things in life aren't things

    Kommentar


    • #3
      Hallo fat32,

      und wollte fragen, wie ihr es findet.
      Nicht gut. Es verleitet zur Annahme, dass jeder sich mit dem Tutorial ein MVC-Framework basteln kann. Es ist jedoch nicht Sinn und Zweck der objektorientierten Programmierung das Rad n Mal neu zu erfinden. Weiterhin bitte ich zu bedenken, dass MVC das wohl am meisten überschätzte Pattern im Bereich Web ist und es sich IMHO daher nicht schickt dem Pattern noch mehr übertriebene Aufmerksamkeit zu geben.

      Außerdem sollte man nicht direkt mit einem eigenen MVC-Framework starten, wenn man sonst noch keine Erfahrung in PHP hat.
      Man sollte grundsätzlich die Finger von einem Framework lassen, wenn man nicht mind. 5 Jahre Programmier- und Architektur-Erfahrung hat! Ein Oxymoron also im Hinblick auf die Einleitung des Tutorials!

      Just my 2 cent!
      Viele Grüße,
      Dr.E.

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      1. Think about software design before you start to write code!
      2. Discuss and review it together with experts!
      3. Choose good tools (-> Adventure PHP Framework (APF))!
      4. Write clean and reusable software only!
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      Kommentar


      • #4
        Erstmal bedanke ich mich für eure Antworten!

        Zitat von phpdummi Beitrag anzeigen
        Ein unfertiges Tutorial bewerten :/ wozu?
        Weil ich dann die Tipps im Rest des Tutorials umsetzen kann. Lieber sagt man mir jetzt, was nicht gut ist als erst, wenn es fertig ist

        Zitat von phpdummi Beitrag anzeigen
        • Request und Response nicht abstrahiert, Beschränkung auf HTTP
        Das folgt noch in einem späteren Kapitel. Es fehlt ja auch noch die View-Klasse.

        Zitat von phpdummi Beitrag anzeigen
        • Nur ein Controller und eine Action möglich (schlecht)
        Das ist wirklich ein Nachteil. Ich habe mir auch schon Gedanken über eine Lösung gemacht, bin aber noch nicht zu einer gekommen
        Wie löst man sowas am geschicktesten?
        Ich will ja nur einen Controller in der URL übergeben.

        Zitat von phpdummi Beitrag anzeigen
        • FW::isValid nicht geklärt
        Danke, das wird noch nachgeholt.

        Zitat von phpdummi Beitrag anzeigen
        • Singleton in jeder Klasse einzeln implementiert (statt generisch)
        Soweit ich weiß, muss dafür eval verwendet werden. Das möchte ich auf alle Fälle vermeiden. Außerdem ist so ein Singleton ja auch nicht besonders viel Arbeit.

        Zitat von phpdummi Beitrag anzeigen
        • Wann soll dieError() zum Einsatz kommen (sonnst wird ja eine Fehlerseite angezeigt, was auch gut so ist)
        dieError wird bei schwerwiegenden Fehlern verwendet. Wenn z.B. die DB down ist. Aber eigentlich hast du recht.... Ich nehme dieError wahrscheinlich wieder raus.


        Zitat von phpdummi Beitrag anzeigen
        PS: Warum nimmst du in deinem Wordpress Plugin nicht einfach html_entities() raus?
        Da hätte ich auch selber drauf kommen müssen Trotzdem danke...

        Nicht gut. Es verleitet zur Annahme, dass jeder sich mit dem Tutorial ein MVC-Framework basteln kann. Es ist jedoch nicht Sinn und Zweck der objektorientierten Programmierung das Rad n Mal neu zu erfinden. Weiterhin bitte ich zu bedenken, dass MVC das wohl am meisten überschätzte Pattern im Bereich Web ist und es sich IMHO daher nicht schickt dem Pattern noch mehr übertriebene Aufmerksamkeit zu geben.
        Da magst du recht haben, aber ich denke, wenn sich jemand sowas vornimmt, wird er seine Gründe haben. Wahrscheinlich will er nicht auf Zend & Co zurückgreifen. So geht/ging es mir auch.
        Und solange man nicht eine Seite schreibt, die besonders hohe Sicherheitsanforderungen hat, kann man sich doch auch mal an ein MVC-Framework wagen...

        Kommentar


        • #5
          Ich will ja nur einen Controller in der URL übergeben.
          Warum?
          Soweit ich weiß, muss dafür eval verwendet werden. Das möchte ich auf alle Fälle vermeiden. Außerdem ist so ein Singleton ja auch nicht besonders viel Arbeit.
          Nein, wie kommst du auf eval? Siehe Singleton - php bar

          Zitat von dr.e.
          Man sollte grundsätzlich die Finger von einem Framework lassen, wenn man nicht mind. 5 Jahre Programmier- und Architektur-Erfahrung hat!
          Wobei selbst das nicht vor Dummheit schützt, wenn man sich den Markt mal anguckt
          "Nobody is as smart as everybody" - Kevin Kelly
          — The best things in life aren't things

          Kommentar


          • #6
            Ohne jetzt die OT Diskussion lostreten zu wollen:

            Singleton in jeder Klasse einzeln implementiert (statt generisch)
            > Soweit ich weiß, muss dafür eval verwendet werden
            >> Nein, wie kommst du auf eval? Siehe Singleton - php bar
            Das ist aber kein gutes generisches ST. Aus zweierlei Grund:
            - Konstruktor kann nicht geschützt werden
            - static public function getInstance($className)
            Klassenname muß an die gleichnamige Klasse übergeben werden

            Ich würde damit auf PHP 5.3 warten, wo get_called_class() bzw. static::$cClassname möglich sind.


            Zur Frage selbst - Ich finde es auch etwas abstrus, ein Tutorial zur Framework-Entwicklung zu schreiben. Ich dachte erst, Du meinst das MVC Pattern, das hätte imho eher zum angestrebten Seitenumfang gepaßt.
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Zitat von dr.e. Beitrag anzeigen
              Weiterhin bitte ich zu bedenken, dass MVC das wohl am meisten überschätzte Pattern im Bereich Web ist und es sich IMHO daher nicht schickt dem Pattern noch mehr übertriebene Aufmerksamkeit zu geben.
              Naja das MVC ist auch erst in Mode gekommen seitdem Rails die breite Masse erreicht hat. In einen guten Entwurfsmusterbuch stehen die Vor- und Nachteile des Patterns gut beschrieben. Ich persöhnlich finde es nicht schlecht alles so strict zu trennen aber es hat auch Nachteile.
              Was mich dabie nur wundert ist wenn das Pattern tatsächlich so überschätzt wird wieso dann das Einsteiger-Tutorial des Zend-Frameworks auf dem MVC Pattern basiert... müsste ja eigentlich nicht da man die Klassen auch einzeln benutzen kann.
              Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

              Kommentar


              • #8
                Hallo HStev,

                In einen guten Entwurfsmusterbuch stehen die Vor- und Nachteile des Patterns gut beschrieben.
                ... nur das lesen die wenigsten genau durch!

                [..] müsste ja eigentlich nicht da man die Klassen auch einzeln benutzen kann.
                Schön, dass du mir zustimmst.
                Viele Grüße,
                Dr.E.

                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                1. Think about software design before you start to write code!
                2. Discuss and review it together with experts!
                3. Choose good tools (-> Adventure PHP Framework (APF))!
                4. Write clean and reusable software only!
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                Kommentar


                • #9
                  Zitat von nikosch
                  Das ist aber kein gutes generisches ST. Aus zweierlei Grund:
                  - Konstruktor kann nicht geschützt werden
                  - static public function getInstance($className)
                  Klassenname muß an die gleichnamige Klasse übergeben werden
                  Das ist klar. Wenn ich mir aber ein Singleton-Objekt ziehen möchte, tue ich das über die generische Singleton Klasse.
                  Möchte ich kein Singleton haben, kann ich die Klasse direkt instantiieren - bin dabei aber unabhängig von der bereits Singleton gehaltenen Klasse.

                  Natürlich stellt dies kein echtes Singleton mehr dar, da die direkte Instantiierung erlaubt ist. Das finde
                  ich aber nicht besonders schlimm sondern eher Vorteilhaft. Es ist eben wie die Programmierung
                  mit PHP4 - private Methoden und Eigenschaften kann mann nur, zum Beispiel durch Unterstriche, kennzeichnen
                  und bei der Übergabe muss man immer auf die Referenzen achten. Trotzdem lässt sich damit genauso
                  ein Software-Design wie mit PHP5 (und 5.3) umsetzen -Kondition des Programmierers vorausgesetzt
                  "Nobody is as smart as everybody" - Kevin Kelly
                  — The best things in life aren't things

                  Kommentar


                  • #10
                    Das ist klar. Wenn ich mir aber ein Singleton-Objekt ziehen möchte, tue ich das über die generische Singleton Klasse.
                    Möchte ich kein Singleton haben, kann ich die Klasse direkt instantiieren - bin dabei aber unabhängig von der bereits Singleton gehaltenen Klasse.
                    Das ist aber gefährlich. Würde ich so nie umsetzen.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      Zitat von nikosch Beitrag anzeigen
                      Das ist aber gefährlich. Würde ich so nie umsetzen.
                      Finde ich aber auch, denn ein Singleton setzt man eigentlich nur dann ein wenn nur eine Instanz möglich sein darf. Meine Klasse Connection aus meinen Project mit den Svdrp vom VDR welches ich hier in Software-Design - php.de angesprochen habe müsste eigentlich auch ein Singleton sein da der Server nur ein Client gleichzeitig verwaltet und alle anderen Verbindungen ablehnt.
                      Und wenn ich eine mehrfache Instanzierungen einer Klasse erlaube brauch ich kein zuätzliches Singleton Pattern es sei denn du willst eine Art Container in dem du die Instanzen aufbewarst was du dann allerdings über eine seperate Klasse lösen solltes.
                      Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                      Kommentar


                      • #12
                        Finde ich aber auch, denn ein Singleton setzt man eigentlich nur dann ein wenn nur eine Instanz möglich sein darf.
                        Das mag aus Designtechnischen Gründen richtig sein, aber die Faulheit oder Dummheit eines Entwicklers sollte man nicht versuchen auszuschalten.

                        Ich persönlich mag das abstrakte Singleton auch lieber, da ich frei in meiner Entscheidung bin, wann ich das Feature nutze und muss nicht unnötigen Ballast mit mir rumschleppen. Die Gefahren sind klar, die Vorteile liegen jedoch auch auf der Hand.
                        Viele Grüße,
                        Dr.E.

                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        1. Think about software design before you start to write code!
                        2. Discuss and review it together with experts!
                        3. Choose good tools (-> Adventure PHP Framework (APF))!
                        4. Write clean and reusable software only!
                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                        Kommentar


                        • #13
                          Zitat von phpdummi Beitrag anzeigen
                          Das ist klar. Wenn ich mir aber ein Singleton-Objekt ziehen möchte, tue ich das über die generische Singleton Klasse.
                          Möchte ich kein Singleton haben, kann ich die Klasse direkt instantiieren - bin dabei aber unabhängig von der bereits Singleton gehaltenen Klasse
                          Und was bringt das dann? Die Klasse sollte schon wissen, ob sie jetzt ein Singleton ist oder nicht.

                          Beim Thema Singleton sieht meine Meinung so aus: Jede Klasse hat eine eigene getInstance()-Methode. Das bisschen Schreibarbeit ist ja nicht schlimm.


                          Zur Umfrage:
                          Warum haben 3 Leute mit 6 bewertet? Die Frage war, ob das Tutorial verständlich ist. Was ist denn unverständlich?

                          EDIT:
                          Wie soll ich das denn umsetzen, dass mehrere Controller ausgeführt werden können? Ich stehe gewaltig auf dem Schlauch

                          Kommentar


                          • #14
                            Die Gefahren sind klar, die Vorteile liegen jedoch auch auf der Hand.
                            Sehe ich auch so.

                            Sollte es wirklich gefährlich sein ein Objekt instantiieren zu können, kann mann ja immer noch auf das normale Singleton in PHP5.2 ausweichen.

                            Was ist denn unverständlich?
                            Der weitere Verlauf des Tutorials. Außerdem schreibst du viel über das was du tust, kaum aber über deine Gründe.

                            Wie soll ich das denn umsetzen, dass mehrere Controller ausgeführt werden können? Ich stehe gewaltig auf dem Schlauch
                            Lass deiner Fantasie freien lauf. Ich schwöre auf das http://adventure-php-framework.org/
                            (An einem Re-Design der Seite wird gerade mit hochdruck gearbeitet )
                            "Nobody is as smart as everybody" - Kevin Kelly
                            — The best things in life aren't things

                            Kommentar


                            • #15
                              Ich habe das Tutorial jetzt um den Artikel über den Controller ergänzt. Es ist leider weiterhin nur ein Controller und eine Action möglich. Ich lasse mir da noch was einfallen!

                              Falls jemand Interesse am Framework hat, kann er es hier herunterladen.

                              Der weitere Verlauf des Tutorials. Außerdem schreibst du viel über das was du tust, kaum aber über deine Gründe.
                              Ok, mit dieser Kritik kann ich was anfangen Das lässt sich ändern! Danke

                              Lass deiner Fantasie freien lauf. Ich schwöre auf das Adventure PHP Framework - Startseite
                              Das schau ich mir mal an
                              Eventuell ergibt sich daraus ja die ein oder andere Idee für mein Framework.

                              EDIT: Jetzt verstehe ich, wie du das mit dem Singleton gelöst hast. Es mag ja sein, dass du damit zurecht kommst, aber es ist schnell passiert, dass man doch versehentlich mal ein new verwendet. Und dann viel Spass beim Debuggen!

                              Außerdem: Warum verwendest du PHP4-OOP-Code, obwohl auf der Seite steht, dass es PHP5 (adventure-codepack-1.7-RC2-2008-09-13-1602-php5.zip) ist?
                              Und gibt es einen Grund dafür, dass du mehrer Klassen in eine Datei schreibst? (Frontcontroller.php ist gemeint)

                              MfG fat32

                              Kommentar

                              Lädt...
                              X