PHP-Frameworks: Was ist das und wie wählt man das Richtige?

  • Guten Morgen,
    da hier viele irgendwelche Werke basierend auf ihrem selbst geschriebenem Pseudo-Framework veröffentlichen, möchte ich heute mal ein bisschen Aufklärung leisten.


    Was ist ein Framework?
    Übersetzen wir uns zuerst den Begriff "Framework" - das heißt so viel wie Grundgerüst. Ein Framework soll also ein Grundgerüst sein, auf dem man eine Anwendung mit einer festgelegten, möglichst wiederverwertbaren, Struktur aufbauen kann. Das mag zwar sehr abstrakt klingen, doch genau das ist das Gute daran.
    Es gibt viele verschiedene Frameworktypen, ich gehe hier auf Application Frameworks ein, und vor allem verschiedene Strukturmuster, zum Beispiel das in der PHP-Community sehr bekannte und beliebte (H)MVC-Muster ((Hierarchical) Model View Controller), auf das ich im weiteren Verlauf genauer eingehen werde.


    Warum sollte man ein Framework nutzen?
    Die Vorteile eines Frameworks liegen auf der Hand.

    • kürzere Entwicklungszeiten -> schnellere Ergebnisse (auch wenn man vorher eine längere Einarbeitungsphase hat)
    • sauberer Code und Struktur (ist natürlich nicht garantiert, man kann auch mit einem Framework schlechten Code fabrizieren)
    • leichter erweiterbar
    • stabilere Basis


    Was ist das MVC-Pattern?
    MVC steht für Model View Controller, das heißt, man teilt die Anwendung in drei Hauptteile, den Daten-Teil (Model), den Anzeige-Teil (View; meist ein Template) und den Verarbeitungs-Teil (Controller), auf. Wie genau diese Teile zusammenhängen und miteinander agieren, würde jetzt zu weit führen, eine kleine Google-Suche sollte für Interessierte allerdings drin sein.


    Was macht ein gutes Framework aus?
    Ein gutes Framework sollte einige Kriterien erfüllen:

    • eine gute, klare Struktur besitzen, möglichst an den PSR-1 (und PSR-0) Standard angepasst
    • eine saubere Codebasis besitzen (möglichst PSR-2)
    • decoupled, also entkoppelt, auf Komponenten basiert
    • leichte Anpassbarkeit/Ersetzbarkeit der Komponenten an die Bedürfnisse via DI (Dependency Injection) (Modular)
    • leichte Erweiterbarkeit durch Plugins/Module/Bundels/... (Modular)
    • leistungsstark


    Welche Frameworks erfüllen diese Kriterien (größtenteils)?
    Die hier genannten Frameworks sind nur Beispiele, es gibt natürlich noch mehr, die die oben genannten Kriterien erfüllen.
    Modulare full stack Frameworks


    Micro Frameworks


    Das richtige Framework für den richtigen Zweck
    Was für ein Framework sollte man nun also nutzen? Das kommt ganz auf die Anwendung an.
    Für kleine Projekte empfehlen sich generell Microframeworks, da sie kleiner sind und eine geringere Einarbeitungs- und Vorbereitungszeit benötigen. Außerdem sind die meist schneller, weshalb sie für APIs besonders gerne eingesetzt werden.
    Für große Projekte sollte man auf Fullstack Frameworks zurückgreifen, da sie einfach einen größeren Funktionsumfang bieten.
    Welches Framework man letztendlich nutzt, entscheidet man selbst, alle haben Vor- und Nachteile.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Eine kurze Einführung in das Thema, aber wirklich detailliert hast du nichts erklärt. Weder MVC, noch PSR, noch wirkliche Vorteile.
    Ich habe mit solchen Frameworks noch nicht gearbeitet. Deshalb frage ich mich natürlich, was der Vorteil an so einem Code sein soll:

    Für mich sieht das eher nach komplexem Code Overhead aus, als nach einer einfachen Programmierhilfe.
    Aber vielleicht ist das ja nur die Anfangs-Skepsis ;)

    Professioneller Webentwickler.

  • Ich muss zugeben, ich habe noch nie mit einem PHP-Framework gearbeitet. Ausser vllt das WCF, aber das ist ja, wenn ich das richtig verstanden habe, eher ne andere Geschichte (oder nicht?). Ich hab zwar bereits mit Web Application Frameworks gearbeitet, aber das war in Node (z.b express). Lässt sich das irgendwie vergleichen? :D


    Ausserdem habe ich noch nicht wirklich verstanden, warum genau ich eins nutzen sollte. Klar, du hast ein paar Sachen aufgelistet, aber evtl wären beispiele ganz nett in denen man einen vergleich sieht.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Eine kurze Einführung in das Thema, aber wirklich detailliert hast du nichts erklärt.


    Was soll ich denn detailliert erklären? Ich habe erklärt was ein Framework ist und wozu man es nutzt - wie man es anwendet ist vom verwendeten Framework abhängig.


    Ich hab zwar bereits mit Web Application Frameworks gearbeitet, aber das war in Node (z.b express). Lässt sich das irgendwie vergleichen? :D


    Jap.


    Klar, du hast ein paar Sachen aufgelistet, aber evtl wären beispiele ganz nett in denen man einen vergleich sieht.


    Wie willst du das mal eben Vergleichen? Müsste man mit einem Projekt machen.


    Der einzige Vorteil an einem Framework für die meisten hier ist eigentlich nur die richtige Datenbanknutzung.


    Das wage ich zu bezweifeln. Nahezu kein Framework stellt von Haus aus die Möglichkeit zur Datenbankverwaltung zur Verfügung. Für die Full Stack Frameworks sollte man sowieso einen ORM verwenden, für die Microframeworks gibt es meist Erweiterungen für einen DBAL.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Eine kurze Einführung in das Thema, aber wirklich detailliert hast du nichts erklärt. Weder MVC, noch PSR, noch wirkliche Vorteile.
    Ich habe mit solchen Frameworks noch nicht gearbeitet. Deshalb frage ich mich natürlich, was der Vorteil an so einem Code sein soll:

    Für mich sieht das eher nach komplexem Code Overhead aus, als nach einer einfachen Programmierhilfe.
    Aber vielleicht ist das ja nur die Anfangs-Skepsis ;)

    Es ist viel komfortabler so zu arbeiten. Macht aber nur bei größeren Projekten wirklich Sinn.

    Der einzige Vorteil an einem Framework für die meisten hier ist eigentlich nur die richtige Datenbanknutzung.

    Sehe ich genauso. Ist leider hier fehl am Platz. Die meisten haben von Tuten und Blasen sowieso keine Ahnung, warum noch mehr Wissen bereitstellen,wenn die Grundlagen nicht mal vorhanden sind.


    Meiner Meinung nach hätte man es noch ausführlicher beschreiben können. Letztendlich sollte es ja aber nur mal einen kleinen Einblick geben, was ein Framework ist und welche Frameworks es gibt.

    Chief Technology Officer (CTO)


    Interesse an folgenden Domains?

    fivemp.de - planet-zoo.de

    Jetzt anschreiben :)