Von der Weiterleitung von HTTP-Anforderungen bis zum Zugriff auf die Datenbank und zum Rendern der Benutzeroberfläche haben die meisten Webanwendungen viele Gemeinsamkeiten. Viele von ihnen erlauben ihren Besuchern, sich anzumelden, und es ist schwer vorstellbar, eine Webanwendung ohne E-Mail-Versand zu erstellen.
Ein Software-Framework ist eine Möglichkeit, diese Beobachtung in die Praxis umzusetzen.
Durch das Extrahieren der gemeinsamen Merkmale und der zugrunde liegenden Architektur der Anwendung und deren Bündelung in einer wiederverwendbaren Vorlage und Sammlung von Bibliotheken können Entwickler sich auf das konzentrieren, was ihr Projekt auszeichnet.
Wenn Sie Ihr bisheriges Projekt als Boilerplate verwenden und nicht bei Null anfangen, verwenden Sie bereits ein Ad-hoc-Framework. Die gängigen PHP-Frameworks - wie Laravel, Yii oder Symfony - verfolgen diesen Ansatz zu ihrem logischen Schluss, indem sie die Architektur und das Tooling des Frameworks stark in den Mittelpunkt stellen und diese dann für andere Entwickler in ihren Projekten zur Verfügung stellen.
Aber ist die Verwendung eines Frameworks immer der beste Weg, oder ist es manchmal sinnvoll, nur mit reinem PHP von vorne zu beginnen?
Um die Frage zu beantworten, betrachten wir in diesem Tutorial fünf Vor- und Nachteile der Verwendung eines PHP-Frameworks.
Beginnen wir mit einem Blick darauf, wie die Verwendung eines PHP-Frameworks Ihnen bei Ihrer Anwendungsentwicklung helfen kann.
In den heutigen Start-ups, die auf Experimenten, schnellem Prototyping und möglichst schnellem Umsetzen eines möglichst realisierbaren Produkts in der Welt basieren, kann die Entwicklungsgeschwindigkeit das sein, was Ihr Unternehmen auszeichnet oder bricht.
Die Verwendung eines PHP-Frameworks ist eine Möglichkeit, diese Anforderung zu erfüllen.
Ein durchdachtes PHP-Framework wählt die besten Implementierungen für häufig auftretende Probleme aus der Open-Source-Community aus und bietet Ihnen, aufbauend, eine Anwendungsarchitektur (in den meisten Fällen basierend auf dem Model-View-Controller-Muster) zur Anleitung Ihre Entwicklung.
Auf diese Weise können Sie, anstatt Zeit für das Planen der Architektur Ihrer Anwendung und das Auswerten der verschiedenen verfügbaren Bibliotheken aufzuwenden, von einer voll funktionsfähigen, wenn auch nackten Vorlage ausgehen, und sofort die für Ihre Anwendung spezifischen Funktionen erstellen. Viele PHP-Frameworks verfügen auch über ein Befehlszeilentool, mit dem Sie Code generieren und so wertvolle Entwicklungszeit sparen können.
Durch die Beschleunigung Ihrer Entwicklung können Sie durch ein Framework auch sicherer werden: Sie arbeiten schnell, aber das geschieht nicht, wenn Sie sich mit schnellen und schmutzigen Lösungen hacken, sondern mit bewährten Best Practices und vorgefertigten Komponenten.
Die in einem modernen PHP-Framework enthaltenen Lösungen werden von mehreren Entwicklern unter Verwendung des Frameworks kontinuierlich getestet und durch Experten überprüft und validiert. Da die Frameworks Open Source sind, werden Sicherheitsprobleme und andere Probleme, die Sie möglicherweise in Ihrem proprietären Code übersehen, schnell erkannt und behoben.
Das heißt, es ist wichtig zu wissen, dass die Verwendung eines Frameworks nicht bedeutet, dass Sie alle Sicherheits- und Entwicklungspraktiken vergessen können. Stellen Sie sicher, dass Sie das Framework so verwenden, wie es verwendet werden soll, halten Sie es auf dem neuesten Stand und leisten Sie einen Beitrag zum Beispiel zur Validierung von Parametern - mit den Tools des Frameworks ist es nicht allzu schwierig.
Ein PHP-Framework bietet eine solide Struktur für Ihre Anwendung und lässt Sie zu bewährten Vorgehensweisen und Mustern für die Softwareentwicklung treiben. Das PHP-Framework führt Sie dazu, Code zu schreiben, der lose gekoppelt ist und sich so wenig wie möglich wiederholt. Mit anderen Worten, es ist einfach zu lesen, zu testen, zu warten und weiterzuentwickeln.
Nahezu alle gängigen PHP-Frameworks sind heute objektorientiert und für automatisierte Tests und sogar testgetriebene Entwicklung entwickelt.
Sie müssen immer noch Ihren Teil tun. Verglichen mit dem Aufbruch von Grund auf, werden ein Framework und seine Dokumentation, die Sie an die Konzepte erinnern und Sie dazu bringen, sie zu verwenden, sicherlich helfen.
Eine andere Art und Weise, wie die Verwendung eines Frameworks die Wartung Ihrer Anwendung vereinfacht, besteht in den gemeinsam genutzten Komponenten. Da die Framework-Bibliotheken und Helfer unabhängig von Ihrer Anwendung entwickelt werden, können Sie einen großen Teil der Wartung Ihrer Anwendung an die Framework-Entwickler auslagern.
In gewisser Weise ist es so, als ob ein Team von Entwicklern kostenlos für Sie arbeitet!
Als Entwickler kennen Sie Ihre Klassen und Funktionen auswendig und können sie problemlos verwenden. Wenn Sie jedoch Teammitglieder hinzuziehen, ändert sich die Situation.
Ohne Kenntnis Ihrer Entwurfsentscheidungen und vollständiger Dokumentation (seien wir ehrlich: Vor allem in der Welt der schnellen Entwicklung ist die Dokumentation oft ein Nachdenken), wird es für sie schwierig sein, den Code Ihrer Anwendung zu umwickeln.
Die Verwendung eines PHP-Frameworks erleichtert neuen Entwicklern den Einstieg in die Arbeit am Projekt. Die Chancen sind, dass sie bereits mit dem Rahmen vertraut sind und ihre ganze Aufmerksamkeit darauf verwenden können, die Besonderheiten der Anwendung zu verstehen. Und selbst wenn das Framework neu für sie ist, können die Dokumentation, die Online-Tutorials und die vertrauten Entwurfsmuster ihnen dabei helfen, mit minimalem Aufwand auf den neuesten Stand zu kommen.
Währenddessen können Sie weiter an der Anwendung arbeiten, anstatt den Entwicklern Ihre Denkweisen beizubringen.
Ein entscheidender Vorteil der Verwendung eines PHP-Frameworks sind schließlich die aktiven Communities von Entwicklern und Benutzern, die sich um sie herum versammeln.
Alle wichtigen Frameworks ziehen Open Source-Mitarbeiter an, die nicht nur an dem Framework selbst arbeiten, sondern auch zusätzliche Widgets, Bibliotheken und Hilfskomponenten entwickeln, die andere Personen in ihre Anwendungen integrieren können. Andere Mitwirkende schreiben Tutorials und Bücher oder erstellen Videos, um zu erklären, wie sie die Rahmenbedingungen in realen Projekten verwenden.
Als Teil einer solchen Entwicklergemeinschaft werden Sie als Entwickler wachsen, schnell lernen und das, was Sie lernen, auf Ihre Anwendungsentwicklung anwenden.
Und wenn Sie dazu neigen, können Sie auf jede Art und Weise, die sich für Sie natürlich und erfüllend anfühlt, zurückgeben und an den Open-Source-Projekten teilnehmen.
Nachdem wir nun gesehen haben, wie die Verwendung eines PHP-Frameworks Ihnen bei Ihrer Entwicklung helfen kann, werfen wir einen Blick auf die Nachteile und warum der Verzicht auf ein Framework manchmal die bessere Option ist.
Im Vergleich zu einem einfachen PHP-Skript erhöht ein PHP-Framework die Komplexität und den Aufwand in Form von Klassen und Bibliotheken, die geladen werden, bevor der Code überhaupt aufgerufen wird. Bei schnellen Skripts und APIs kann der Unterschied erheblich sein, wobei ein begrenzter Funktionsumfang erforderlich ist, der schnell ausgeführt werden muss.
In den meisten Webanwendungen haben die Auswirkungen eines Frameworks auf die Effizienz jedoch mehr mit seiner Verwendung als mit dem Framework selbst zu tun. Eine Active Record-Implementierung ist zwar ein praktischer Weg, um auf die Datenbank zuzugreifen. Es ist jedoch nicht sinnvoll, sie an Stellen zu verwenden, an denen Sie mehrere Zeilen in der Datenbank gleichzeitig bearbeiten müssen.
Es kommt also darauf an, die Anforderungen Ihrer Anwendung zu kennen, aber Sie lassen sich auch nicht an eine bestimmte Art der Anwendung hängen. Manchmal, selbst wenn Sie mit einem Framework arbeiten, ist es sinnvoll, einen Teil des Codes auf einer niedrigeren Abstraktionsebene zu umgehen und zu schreiben.
Die Idee eines PHP-Frameworks besteht darin, eine allgemeine Lösung für die wiederkehrenden Anforderungen zu sein, denen sich Entwickler bei der Entwicklung einer Webanwendung stellen müssen. Aber wo sollten wir die Grenze ziehen, was in das Framework aufgenommen werden soll und was für Anwendungen oder Drittanbieter-Add-Ons übrig bleiben soll?
Laut einigen Entwicklern gehen hier viele Frameworks schief.
Rasmus Lerdorf, der Schöpfer von PHP, hat gesagt:
„Niemand hat ein generelles Problem. Jeder hat ein sehr spezifisches Problem, das er zu lösen versucht. Ein allgemeines Rahmenwerk löst dieses Problem zwar, löst es aber normalerweise so, dass Sie so viele andere Dinge erhalten, die Sie nicht benötigen. Das wird bei jeder Anfrage erledigt. “
Wenn Sie sich also für ein Framework entscheiden, müssen Sie unbedingt eines auswählen, das den Anforderungen Ihrer Anwendung entspricht.
Während die meisten Frameworks auf verzögertem Laden basieren und nicht die Teile des Frameworks enthalten, die Ihre Anwendung nicht verwendet, ist die zusätzliche Komplexität immer noch vorhanden, was zu unnötigen Nachteilen beim Entfernen von Funktionen führt, die mit dem Framework geliefert wurden, die Sie jedoch nicht zulassen brauche nicht.
Während ein PHP-Framework Sie zu gutem Code zwingt, ist dies keine Garantie dafür. Wenn Sie mit einem Framework arbeiten, ohne es zu verstehen und die Entwurfsmuster, die dahinter stehen, werden Sie höchstwahrscheinlich zu einem großen strukturierten Durcheinander führen.
Für jemanden, der diese Gestaltungsprinzipien bereits aus anderen Rahmenbedingungen oder Projekten kennt, ist die Lernkurve relativ kurz. Für Entwickler mit weniger Erfahrung dauert das Lernen länger. Ganz zu schweigen von der Beherrschung des Rahmens.
Wenn Sie also in Eile sind - und Ihr Projekt ist klein -, ist es möglicherweise nicht die Zeit, ein neues Rahmenwerk zu erlernen. Ziehen Sie stattdessen die Verwendung eines Mikro-Frameworks in Betracht oder beginnen Sie sogar von vorne und verwenden Sie einige Bibliotheken, mit denen Sie vertraut sind.
Nehmen Sie sich dann die Zeit, um ein umfassendes PHP-Framework zu erlernen, wenn es Ihr Zeitplan zulässt.
Durch die Verwendung eines Software-Frameworks wird Ihre Anwendungsentwicklung auf eine höhere Abstraktionsebene gebracht. Dies ist beabsichtigt und normalerweise eine gute Sache. Es ist jedoch gut zu wissen, dass auch dies zu Problemen führen kann.
Während viele Teile der Vorlage des Frameworks angepasst werden sollen, sind der Kern und die Bibliotheken des Frameworks wie eine Blackbox, die Sie verwenden, haben aber keine große Kontrolle. Sie können Verbesserungen vorschlagen, aber letztendlich liegt es an den Entwicklern des Frameworks, zu entscheiden, ob sie diese Änderung übernehmen oder nicht.
Wenn Sie ein Framework einsetzen, bevor Sie die PHP-Sprache selbst vollständig verstehen, können Sie die Features des Frameworks mit den Sprachfeatures verwechseln - und die Funktionalität des Frameworks auch dann verwenden, wenn normales PHP die bessere Wahl ist.
Ein Framework ist immer eine externe Abhängigkeit für Ihren Anwendungscode, der von einer anderen Person als Ihnen und Ihrem Team gesteuert wird. Dies ist normalerweise kein Problem, aber es ist eine Überlegung wert, ob die Software, die Sie erstellen, ein Kernbestandteil Ihres Unternehmens ist.
Fragen Sie sich, was Sie tun werden, wenn die Entwicklung des Frameworks fällt oder sich in eine Richtung bewegt, in die Sie nicht folgen möchten.
Eine gute Möglichkeit, dieses Risiko zu mindern, ist die Verwendung eines zuverlässigen, beliebten Frameworks mit einer aktiven Community von Entwicklern und Benutzern. Aber auch dann sollten Sie darüber nachdenken: Sind die Vorteile eines Frameworks groß genug, um das Risiko in Kauf zu nehmen??
Ein modernes PHP-Framework ist ein leistungsfähiges Werkzeug im Werkzeugkasten eines Softwareentwicklers: Es kann Ihnen viel Zeit und Mühe sparen und Sie können beruhigt sein, wenn Sie Ihre PHP-Anwendung entwickeln. Denken Sie daran, dass dies nicht zuerst das PHP-Lernen ersetzen sollte!
Der Schlüssel in der obigen Schlussfolgerung ist jedoch die Auswahl des richtigen Werkzeugs für den Job. Jedes Projekt ist anders, und selbst ein Rahmen, der perfekt für ein Projekt ist, ist für das nächste nicht unbedingt richtig. Gehen Sie zur Vereinfachung und fragen Sie sich, ob ein ausgewachsenes Framework für das Projekt geeignet ist oder ob die Verwendung eines Mikro-Frameworks wie Lumen eine bessere Lösung wäre.
Mit Vanilla von Grund auf neu zu beginnen, ist PHP selten die beste Option, aber auch das ist eine Überlegung wert, wenn Sie eine sehr einfache Anwendung entwickeln (z. B. eine Website ohne viel Interaktivität) wählen.
Stellen Sie bei der Auswahl eines Frameworks sicher, dass das von Ihnen gewählte Framework aktiv entwickelt und unterstützt wird und solide Software-Engineering-Praktiken befolgt. Auf diese Weise machen Sie Ihre Anwendung zukunftssicher, indem Sie sicherstellen, dass das zugrunde liegende Framework keinen ruhigen Tod erleidet.
Und selbst wenn Sie sich entscheiden, eines nicht zu verwenden, ist es eine gute Idee, sich mit einem oder mehreren der modernen PHP-Frameworks vertraut zu machen. Das Studieren ist ein hervorragender Weg, um Ihre Kenntnisse in der Softwareentwicklung zu erlernen und zu verbessern und Ihnen dabei zu helfen, auf dem neuesten Stand der PHP-Entwicklung zu bleiben.