Ein Blick auf die neuen Features von Symfony 3.2

Symfony 3.2
Kommentare

Symfony 3.2 bringt eine Menge Neuerungen mit sich. Zeit, sich einen Überblick über alle Neuigkeiten zu verschaffen.

Von Symfony 3.2 wurde ein erster Release Candidate veröffentlicht. Die finale neue Version des PHP-Frameworks wird zahlreiche Verbesserungen mit sich bringen.

Am 30. Mai 2016 hatte Fabien Potencier Version 3.1 des PHP-Frameworks Symfony veröffentlicht. Jetzt, ein halbes Jahr später, steht Symfony 3.2 kurz davor, final veröffentlicht zu werden. An Bord sind unzählige Bugfixes sowie ein paar spannende neue Features.

Symfony 3.2

An Bord von Symfony 3.2 sind unzählige Features, die das Team in gewohnter Manier in einzelnen Blogposts vorgestellt hat. Um euch zumindest einen groben Überblick bieten zu können, haben wir die Features für euch zusammengefasst.

Hier findet ihr eine Zusammenfassung aller neuer Features in Symfony 3.2 – inklusive Links zu ausführlichen Beschreibungen.

Das Ausspielen binärer Dateien kann ab und an zu einem Problem werden. Symfony 3.2 erhält eine neue Helper-Methode im Base Controller mit dem Namen file(), die dabei helfen soll, genau diese Probleme in den Griff zu bekommen.

Neuerungen gibt es auch in der Filesystem-Komponente, der mit hardlink() und readlink() zwei neue Methoden spendiert wurden.

Das Symfony-Team hat seinen YAML-Konfigurationsdateien eine Extension spendiert, mit der es nun möglich ist, Konstanten in YAML-Dateien mit !php/const: zu definieren. Doch das ist nur eine der Neuerungen, die die Arbeiten mit YAML einfacher machen.

Eine weitere Neuerung betrifft die Einführung von Underscores für numerische Literale. Da es keine Mengenbegrenzungen gibt, kann man die Anzeige langer Literale damit nach Belieben formatieren und somit die Lesbarkeit deutlich erhöhen.

Ein kleiner Hinweis zu den Deprecations sei an dieser Stelle angebracht: der Komma-Seperator in Floats ist ab Symfony 3.2 als deprecated gekennzeichnet, ebenso wie das duplizieren von Keys. Für reichlich Diskussionsstoff sorgt indes der Zwang, nach dem Doppelpunkt in den Key-Definitionen ein Leerzeichen einzufügen. In Symfony 3.2 soll das Framework eine Warning auswerfen, ab Version 4.0 soll eine ParseException geworfen werden.

Neu ist übrigens auch der Encoder für YAML und CSV, mit der sich Applikationsdaten ex- oder importieren lassen.

Enterprise-Anwendungen haben mitunter strikte Vorgaben darüber, wie mit Daten umzugehen ist. Ein besonderer Fall ist dabei immer wieder das Thema Datumsformat. Mit DateIntervall in Formularen bietet Symfony 3.2 nun die Möglichkeit, Daten nach ISO 8601 in Formularen anzugeben.

Eine weitere Neuerung betrifft das Feature ChoiceType: Ihm wurde ein Lazy Loading der Values spendiert, was vor allem die Performance verbessern soll.

PSR-6 definiert ein Caching-Interface; doch das war dem Team nicht genug. Ein neues Feature ermöglicht es Entwicklern nun, Caches mit Tags zu versehen und bei Bedarf damit in Verbindung stehende Caches zu erneuern.

Doch das ist bei Weitem nicht die einzige Neuerung im Bereich des Chaches. So wurden der Cache-Komponente zahlreiche neue Adapter hinzugefügt; unter anderem der Null-Adapter, der File System Adapter sowie Adapter für PDO und Doctrine DBAL. Weitere Informationen dazu liefert der entsprechende Blogpost.

Auch die Console hat zahlreiche Neuerungen spendiert bekommen. Während vor allem an der Developer Experience und dem Testen von Commands geschraubt wurde, hat sich auch unter der Haube einiges getan. So gibt es beispielsweise eine neue Terminal-Klasse, mit der künftig vor allem mehr Informationen über das verwendete Terminal bereitgestellt werden sollen. Aber auch der Umgang mit dem Lock Handler wurde vereinfacht, und das neue StreamableInputInterface hilft dabei, den Input-Stream in einer zentralisierten Klasse zu verwalten.

Die Raute ist bekanntlich der Teil, der in der URL die Fragmente kennzeichnet, was beispielsweise zur Navigation genutzt werden kann. Der Router in Symfony 3.2 ist nun in der Lage, solche Fragmente zu definieren. Darüber hinaus wurde die Klasse XmlFileLoader verbessert – so ist es ab sofort möglich, Arrays in XML-Routen zu definieren. Weitere Infos zu den Verbesserungen im Routing findet man im entsprechenden Blogpost.

Neu ist übrigens auch, dass ab Symfony 3.2 UTF-8-Support für Routen und Requirements gegeben ist

Neu in Symfony 3.2 ist die Workflow-Komponente, mit der sich – wie der Name schon sagt – Workflows konfigurieren lassen. So könnte ein Artikel beispielsweise nur dann veröffentlicht werden, wenn vorher bestimmte Konditionen erfüllt wurden; wie beispielsweise das Review oder die Rechtschreibprüfung. Wie genau das aussehen könnte, zeigt eine Demo-Applikation.

Auf die Web Debug Toolbar – die einen CSP-Header spendiert bekommen hat – und der Profiler haben Updates spendiert bekommen. So führt die Formular-Ansicht durch eine farbige Hervorhebung schneller zur eigentlichen Fehlerquelle. Außerdem ist ab sofort das Fetch API an Bord und die VarDumper-Komponente sorgt im Profiler für tiefere Einblicke.

Ab sofort kann der Profiler nicht nur die verwendete Firewall anzeigen, sondern auch deren Konfiguration im Security Panel ausgeben. Verantwortlich dafür zeigt sich die neue Klasse FirewallConfig.

Doch das ist noch nicht alles. So gibt es darüber hinaus Verbesserungen in den Compiler-Passes, einige Verbesserungen in den Environment-Variablen, der Support für XPath-Expressions sowie Verbesserungen im Bereich der privaten Services. Bleibt nur noch eines zu sagen: There is one more thing …

[Update] Nachdem wir einen Großteil der neuen Features bereits vorgestellt haben, steht seit kurzem im Symfony-Blog eine Übersicht über einige weitere neue Features zur Verfügung. So gab es etwa Verbesserungen für die varDumper-Komponente, es wurden einige Dependencies vom FrameworkBundle entfernt und auch einige Twig-Extensions refaktorisiert. Alle weiteren Neuerungen sind im oben genannten Blogpost von Javier Eguiluz zusammengefasst.

Die Symfony Developer Experience

Die Developer Experience des Symfony Frameworks ist dem Team enorm wichtig; und so wurden auch Symfony 3.2 einige kleinere und größere Features spendiert, die genau diese DX verbessern sollen.

Darunter fallen zum Beispiel die verkürzte Syntax zur Service-Konfiguration in YAML-Dateien, der Support für PhpStorm in der framework.ide-Konfigurationsdatei oder die Möglichkeit, den Fortschrittsbalken mit negativen Werten zu füttern und ihn somit sozusagen „zurückzuzählen“.

Einen Überblick über diese und weitere kleine Neuerungen findet man im entsprechenden Blog-Post zu den DX improvements.

Let’s start with Symfony 3.2

Symfony 3.2 RC 1 steht ab sofort auf GitHub zum Download bereit. Alle Änderungen zu den Beta-Releases fasst das Changelog zusammenDer Roadmap folgend, wird es bis Juli 2017 mit Updates versorgt – im Januar 2018 ist dann auch Schluss mit Security-Fixes für das Framework.

Vor einem Upgrade braucht man übrigens keine Angst zu haben – der Upgrade Guide steht mit Rat und Tat zur Seite und bietet einen guten Überblick über die verschiedenen Schritte, die man für ein Anheben auf die aktuelle Version beachten sollte.

Symfony 3.2.0-RC2 steht zur Verfügung

Gut anderthalb Wochen nach der Veröffentlichung des ersten Release Candidates von Symfony 3.2 steht nun der zweite Release Candidate zum ausführlichen Testen zur Verfügung. Allzu viele Neuerungen wurden nicht vorgenommen, stattdessen standen zahlreiche Bug-Fixes auf dem Programm. Einen Überblick über alle vorgenommenen Änderungen bietet das Changelog, die Highlights sind zudem im zugehörigen Ankündigungspost von Fabien Potencier zusammengefasst.

Symfony 3.2 steht final zur Verfügung

Wie angekündigt, ist pünktlich zum Monatsende die neue Symfony-Version Symfony 3.2 final erschienen. Insgesamt bringt die neue Framework-Version über 150 neue Features sowie zahlreiche Verbesserungen mit sich. Über die Abwärtskompatibilität müssen sich die User allerdings keine allzu großen Sorgen machen: im Symfony-Blog verspricht Fabien Potencier, dass das Update dank „Backward Compatibility Promise“ keine Probleme bereiten sollte. Trotzdem empfiehlt sich der Blick in die Upgrade-Dokumentation; einen Überblick über die wichtigsten neuen Features bietet zudem der oben genannte Blogpost.

Go for PHP Developers

mit Terrence Ryan (google)

Everything you need to know about PHP 7.2

mit Sebastian Bergmann (thePHP.cc)

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -