PHP Framework
Die Frage, die sich viele Menschen stellen, wenn Sie pHp als Sprache gewählt haben.
Es gibt mehrere Frameworks, ich werde Ihnen die vorstellen, die ich benutze, aber die anderen sind genauso gültig, je nach Ihrem Bedarf. Symfony und Laravel sind sehr komplett, andere sind einfacher einzurichten und für kleine Teams.
Vergleich der beiden Frameworks.
Twig vs. Blade HTML-Engines
- Lavravel schlägt vor, .blade.php-Dateien zu schreiben, d.h. PHP-Dateien mit einigen zusätzlichen Methoden, die Ihnen das Leben erleichtern, wie
@foreach
oder@extends
. Der Code innerhalb der Blade-Tags muss in erster Linie PHP-Code sein - Symfony verwendet die Twig-Template-Engine, die eine völlig andere Syntax als PHP bietet. So kann z.B. das Objekt item.name bei der Verknüpfung von $item.name über Extensions erweitert werden. (Sie können keine PHP-Klasse aus der Vorlage aufrufen)
Twig ist eine leistungsfähigere Engine, ist aber auch restriktiv, da es die Verwendung von Erweiterungen erfordert, um Funktionen hinzuzufügen. Durch diesen Ansatz können Vorlagen auch leichter von Frontend-Entwicklern bearbeitet werden (die Syntax ist einfacher und sieht wie JavaScript aus).
Balde ist einfacher zu handhaben, weil es erlaubt, PHP zu schreiben, mit dem Risiko, manchmal Aufrufe an Modelle direkt in den Views zu sehen.
ORM Doctrine vs Eloquent
- Laravel verwendet standardmäßig Eloquent, ein ORM, das auf Active Record basiert, wobei das Model sowohl für die Darstellung einer Entität als auch für die Verwaltung der Persistenz der Informationen verantwortlich ist
- Symfony verwendet standardmäßig Doctrine, ein ORM, das auf dem Data-Mapper-Prinzip basiert, bei dem wir den Begriff der Entität (Objekt, das Daten repräsentiert), des Repository (Objekt, das zur Manipulation von Entitäten verwendet wird) und des Managers (Objekt, das für die Persistenz verantwortlich ist) trennen
Eloquent hat eine natürlichere und logischere Syntax, aber diese scheinbare Einfachheit kann schnell zu «fetten Modellen» führen, da die gesamte Logik an der gleichen Stelle gespeichert wird.
Doctrine erlaubt natürlich eine bessere Trennung, wird aber für einfache Fälle relativ langatmig sein.
Verwalten von Formularen FormBuilder vs. FormRequest
- Mit Symfony können Sie eine Klasse erstellen, die Formulare verwaltet, von der Erstellung bis zur Verarbeitung. Das Formular wird in der Lage sein, eine Entität aus den empfangenen Daten zu hydrieren
- Laravel bietet lediglich einen bestimmten Request-Typ an, der es erlaubt, die bei einer Anfrage empfangenen Daten zu prüfen und zu verarbeiten. Es ist dann notwendig, die Daten manuell zu verarbeiten und mein Modell entsprechend zu modifizieren
Hinzufügen Bundle-Moduls vs ServiceProvider
- Symfony ist dafür bekannt, ein Bundle-System zu haben, das es erlaubt, zusätzliche Funktionen einfach mit einer guten Code-Trennung hinzuzufügen
- Laravel hat kein solches System, aber es ist möglich, die Verwendung von
ServiceProvider
einzuschränken, die eineboot()
-Methode haben. Es ist also möglich, eine Bibliothek in einem separaten Namespace zu erstellen und beim Importieren des ServiceProviders eine Logik einzubinden
Modulintegration durch Zusammenstellen von Arbeiten in beiden Frameworks.
Zum Schluss
Laravel konzentriert sich auf die Einfachheit des Codes für den Entwickler, was manchmal zu schlechten Praktiken führen kann, wenn man Abkürzungen nehmen möchte. Aber mit ein wenig Strenge werden Sie einen sauberen Code und eine gute Organisation des Codes haben. Die Verwendung eines Service Containers ermöglicht es, die Injektion von Abhängigkeiten zu verwalten und sicherzustellen, dass der Code leicht testbar bleibt.
Symfony erfordert mehr Konsequenz und ist komplexer zu erlernen. Es hat eine längere Lernkurve, hat aber den Vorteil, dass es mehr Beschränkungen auferlegt. Hat man die Lernphase hinter sich gelassen, ist das Entdecken der verschiedenen Bundles, die das Framework bereitstellt, genauso produktiv wie bei Laravel.
Die Wahl hängt von Ihrer Affinität zu der verwendeten Methode ab.