Episode 21 - Symfony
· Summarized
Key takeaways
- Symfony entwickelte sich von einem stark bundle-orientierten Framework zu einem System, dessen eigenständige Komponenten auch in anderen PHP-Projekten und Frameworks verwendet werden können.
- Symfony Flex reduziert den Installationsaufwand, indem Composer-Pakete über Recipes automatisch mit Konfiguration und notwendiger Projektstruktur eingerichtet werden.
- Die Pflege und Rückwärtskompatibilität der Symfony-Komponenten gelten als wichtige Gründe für ihre Nutzung außerhalb des vollständigen Frameworks.
- Das Symfony-Ökosystem umfasst neben dem Framework Werkzeuge für Performance-Analyse, Architekturprüfung und Cloud-Deployment, darunter Blackfire, Symfony Insights und Symfony Cloud.
- Bei PSR-Standards sehen die Sprecher Vorteile für Interoperabilität, bezweifeln aber, dass eine vollständige Übernahme ohne erheblichen Umbau und Kompatibilitätskosten möglich ist.
Summary
Claudio entdeckt Symfony 2 im Jahr 2012
Claudio erinnert sich an seinen ersten Kontakt mit Symfony über ein Video, in dem ein CRUD sehr schnell erstellt wurde. Zunächst arbeitete er noch mit PHP und Centra; in einem Projekt verwendete er Symfony dann erstmals 2012, mit einer frühen Symfony-2-Version. Die Gesprächspartner ordnen Symfony 2 als großen Wendepunkt ein: Aus dem eher anders ausgerichteten Symfony 1 wurde ein moderner, weitreichender PHP-Framework-Ansatz. Composer war damals noch nicht selbstverständlich; später wurde er für die Installation und Verwaltung von Paketen zentral.
Von Bundles zu eigenständigen Symfony-Komponenten
Die Hosts erklären, dass Symfony ursprünglich stark über Bundles strukturiert wurde: Ein Doctrine-Bundle integrierte ORM-Funktionen, und eigene Produkt- oder Kategorie-Bundles konnten jeweils eine Anwendungseinheit kapseln. In neueren Symfony-Versionen sind Bundles weniger der oberste Strukturbaustein; stattdessen stehen wiederverwendbare Komponenten stärker im Vordergrund. Genannt werden unter anderem Kernel, HttpFoundation, HttpKernel, Console, Config, Debug, Filesystem, Finder, ClassLoader und Cache. Diese Pakete können unabhängig von Symfony eingesetzt werden, etwa in Laravel oder Composer selbst.
Warum Symfony-Komponenten außerhalb des Frameworks attraktiv sind
Claudio und Michael heben an den Komponenten zwei Eigenschaften hervor: Sie lassen sich vergleichsweise einfach einzeln verwenden und werden über viele Versionen hinweg gut rückwärtskompatibel gehalten. Dadurch können Entwickler etwa die Console-, Form- oder Filesystem-Funktionen nutzen, ohne eine vollständige Symfony-Anwendung zu bauen. Bei Integrationen wie Doctrine bleibt ein Bundle sinnvoll, weil Doctrine ein eigenes, größeres Projekt mit mehreren Bibliotheken ist. Ein Symfony-Bundle kann dessen Abhängigkeiten über den Dependency-Injection-Container und Services Symfony-konform zugänglich machen.
Symfony Flex automatisiert Installation und Konfiguration
Symfony Flex wird als wichtiger Schritt ab Symfony 4 beschrieben. Composer installiert damit nicht nur ein Paket, sondern kann über sogenannte Recipes auch Standardkonfigurationen, Verzeichnisstrukturen und weitere Einrichtungsschritte automatisch anlegen. Früher musste man nach der Bundle-Installation etwa die Registrierung und Konfiguration manuell aus einer Anleitung übernehmen. Flex übernimmt diesen wiederkehrenden Teil und bietet grundsätzlich auch die Möglichkeit, eigene Pakete mit eigenen Recipes auszustatten; dafür gibt es ein zentrales Repository, in das entsprechende Änderungen eingebracht werden können.
Silex endet, während das Symfony-Ökosystem wächst
Silex wird als leichtgewichtige Symfony-Variante beschrieben, die mit einer zentralen Index-PHP-Datei, Routing und Requests sehr kleine Anwendungen erlaubte und weniger auf klassische Controller-Strukturen festgelegt war. Da Symfony selbst inzwischen viele dieser Vorteile abdeckt, wird Silex nicht weiter unterstützt. Im größeren Ökosystem nennen die Gesprächspartner SwiftMailer und Twig sowie Blackfire, Symfony Insights und Symfony Cloud. Blackfire analysiert PHP-Performance; neben kostenlosen beziehungsweise eingeschränkten Varianten werden kostenpflichtige Angebote ab 29 Euro monatlich und eine Variante für 99 Euro monatlich erwähnt.
Blackfire, Insights und Cloud als praktische Werkzeuge
Blackfire wird wegen der einfachen Einrichtung gelobt: Account anlegen, API-Schlüssel kopieren und innerhalb von etwa fünf bis zehn Minuten mit Profiling beginnen. Die Visualisierungen zeigen unter anderem, welche Teile des Codes Zeit benötigen, und helfen bei Performance-Problemen. Mit den teureren Varianten lassen sich zusätzlich Tests formulieren, etwa eine maximale Antwortzeit von einer Sekunde oder höchstens 20 Datenbankabfragen. Symfony Insights prüft Projekte anhand von Architektur- und Qualitätsregeln. Symfony Cloud wird als Platform-as-a-Service beschrieben, mit der Infrastruktur per Konfiguration und Klick deployt werden kann.
Symfony und die unsichere Zukunft der PHP-FIG-Standards
Zum Schluss sprechen die Hosts über Symfony und kommende beziehungsweise bestehende PSR-Standards. PSR-7 könnte wegen unveränderlicher Request- und Response-Objekte Interoperabilität verbessern, würde Symfony aber eine erhebliche Umstellung und mögliche Kompatibilitätsprobleme abverlangen; deshalb ist unklar, ob Symfony den Standard vollständig übernimmt. PSR-11 für Dependency-Injection-Container wird ebenfalls erwähnt. Die Gesprächspartner diskutieren, ob Standards tatsächlich gemeinsame Schnittstellen schaffen oder eher Best Practices für Framework-Bau liefern, und verweisen auf Symfony-Austritt aus der PHP-FIG.
Show notes
Ohne Symfony wäre PHP wohl nicht da wo es heute stehen würde, da sind sich Claudio und Michael einig. Daher lassen wir nochmal die letzten Jahre von Symfony 1 bis zur aktuellen Version 4 Revue passieren. Was hat sich verändert und wo stehen wir aktuell? Zum Abschluss schauen wir noch auf das sehr große Symfony Ökosystem rund um Blackfire und die neue Symfony Cloud.Links:Liste der Symfony ComponentsSymfony FlexSymfony Flex RecipesSilex ist totBlackfireSymfony InsightsSymfony CloudSymfony steigt aus der PHP Fig aus
Follow this show on AudioBrevity and new episodes get summarized for you. Create a free account