Evolutionär

E-Mail, Testing und Co.

E-Mail

In Sachen E-Mail-Versand beschreibt Symfony wieder einmal eine Kehrtwende. Die ursprünglich in Version 1.0 enthaltene E-Mail-Komponente wurde mit Erscheinen der Version 1.1 entfernt und auf den Einsatz von Fremdbibliotheken verwiesen.

Mit Version 1.3 hält nun aber wieder eine Mail-Komponente Einzug. Diese basiert auf dem äußerst populären und leistungsfähigen Swiftmailer, dessen Funktionen in einer Symfony-Klasse gekapselt wurden. Die Verwendung innerhalb einer Action ist, wie das folgende Listing zeigt, sehr einfach und komfortabel.

<?php
$this->getMailer()
->composeAndSend('from@domain.de',
'to@domain.de',
'Subject',
'Nachricht');
?>

Wer möchte, kann auch E-Mail-Nachrichten mit Attachments versenden.

<?php
$msg = $this->getMailer()
->compose('from@domain.de',
'to@domain.de',
'Subject',
'Nachricht')
->attach(Swift_Attachment::fromPath
('datei.pdf'));
$this->getMailer()->send($msg);
?>

Wer alle Funktionen von SwiftMailer nutzen möchte, der kann selbstverständlich auch direkt auf dessen Klassen zugreifen.

Testing

Unit-Testing ist in vielen Projekten zum Alltag geworden. Seit der ersten Version bringt Symfony sein eigenes Testing-Framework namens Lime mit. Lime hat in der aktuellen Symfony-Version einige kleinere Änderungen erfahren, die aber je nach Projekt sehr nützlich sein können. Wer viele Tests besitzt, für den ist die lange Laufzeit der Unit-Tests oftmals ein Problem.

Der neue Parameter --only-failed sorgt dafür, dass nur Unit-Tests ausgeführt werden, die beim letzten Lauf gescheitert waren. Ebenfalls hilfreich ist der --trace-Parameter, der auch Debug-Output mit ausgibt und so das Debugging vereinfacht.

Auf vielfachen Wunsch wurde als Ausgabeformat für die Test- ergebnisse das xUnit-XML-Format implementiert. Diese Tatsache erleichtert die Nutzung von Lime innerhalb eines Continuous Integration Servers, wie beispielsweise Hudson oder phpUnderControl, ohne den Umweg über ein Plugin zu gehen. Parallel zu der Weiterentwicklung, die in die Version 1.3 eingeflossen ist, wird Lime gerade von Grund auf neu entwickelt. Diese Version soll in einigen Monaten zur Verfügung stehen.

Im Hintergrund

Neben den genannten neuen oder geänderten Funktionen lag der Hauptfokus auf der Performanceoptimierung des Frameworks. Hierzu wurden viele Teile des Systems neu geschrieben oder massiv umprogrammiert. Paradebeispiel hierfür ist das neue Routing-System, das um etwa 50 Prozent beschleunigt wurde.

Auch das Caching wurde verbessert, Symfony stellt mit dem neuen Task project:optimize eine Möglichkeit zur Verfügung, um die Zugriffsgeschwindigkeit weiter zu steigern. Dazu wird ein Snapshot eines Projektes gecacht. Alles in allem macht sich der Wechsel zur Version 1.3/1.4 positiv bemerkbar.

Alle bislang beschriebenen Änderungen betreffen sowohl die Version 1.3, als auch die Version 1.4. Der Hauptunterschied ist, dass Letztere um eine Vielzahl von Funktionen, Plugins und Klassen entschlackt wurde, die als veraltet gekennzeichnet wurden. In 1.3 sind diese weiterhin enthalten, was ein Update vorhandener Anwendungen erleichtern soll.

Mehr zum Thema

Adobe Browserlab
Alle in einem

Unterschiedliche Browser und Betriebssysteme stellen Websites verschieden dar. Adobe versucht dieses Problem mit einem Online-Service zu lösen.
image.jpg
Optimierung

Wer schnell im Web etwas nachsehen möchte, hat keine Zeit auf den Browser zu warten. Sparen Sie sich deshalb vor allem unnötige Werbung.
Das ist neu in IE 9 und Firefox 4
Neue Browser-Versionen

Neue Versionen der beiden großen Browser stehen bevor: Der Artikel zeigt die wichtigsten neuen HTML und CSS-Features für die Webentwicklung.
Browserstatistik Europa
Browserstatistik

Jeder fünfte europäische Internet-Nutzer surft mit Google Chrome. So lautet das Ergebnis einer aktuellen Studie des Webanalyse-Anbieters AT Internet,…
image.jpg
Ratgeber: "Bildbearbeitung"

Der Cloud sei Dank entstehen im Netz immer mehr Werkzeuge, die komplexe Rechenprozesse in einfache Interfaces packen. Das gilt auch für die…
News
Minecraft-Server waren das ursprüngliche Ziel
Alternative zu MacBook Pro und Surface Book
Blockchain-Plattform für Schweizer Großbank