Das Örtchen RSS-Feed
Kategorie
Kategorie: Blog
Buttons & Statistiken
Neueste Kommentare

PHP: Vier nützliche Erweiterungen für Symfony 2

Wie ich schon Anfang der Woche in meinem Lebenszeichen-Beitrag geschrieben habe, hatte ich Anfang 2011 meinen ersten Kontakt mit dem PHP-Framework Symfony 2. Leider kam ich nie dazu, meine Erkenntnisse zu diesem Thema zu verbloggen. Meinen ersten Symfony-Beitrag möchte ich für eine kurze Vorstellung von vier nützlichen Bundles nutzen.

DoctrineMigrationsBundle

https://github.com/doctrine/DoctrineMigrationsBundle

In Symfony 2 arbeitet man normalerweise mit Doctrine 2 als ORM (objekt-relationaler Mapper). Da sich während eines Projekts immer wieder Änderungen innerhalb der Datenbank-Struktur ergeben, ist es sinnvoll diese als Datenbank-Migrationen in Git (oder einem alternativen System zur Versionsverwaltung) zu versionieren. Dies hilft bei der Aktualisierung verschiedener Installation der Anwendung (z.B. Development, Testing, Staging und Production)  bzw. einfach mehrerer Development-Rechner.

Das Bundle ist weitestgehend in der Lage, durch einen Vergleich unserer Doctrine-Entities (also der geplanten Struktur) mit der bisherigen Datenbank-Struktur diese Migrationen automatisch zu erstellen.

StofDoctrineExtensionsBundle

https://github.com/stof/StofDoctrineExtensionsBundle

Dieses Bundle integriert einige nützliche Doctrine-Erweiterungen. In meinem Test-Projekt habe ich nur Sluggable und Timestampable genutzt und kann deswegen zu den restlichen Erweiterungen nicht wirklich etwas sagen.

Mit Sluggable ist es möglich, aus einem Attribut unserer Doctrine-Entity einen Slug und somit die wichtigste Information für die Nutzung von Pretty URLs bzw. Clean URLs (zu deutsch "lesbare URLs") zu erzeugen. Mit Timestampable hingegen ist es extrem einfach, das Erstellungs- bzw. Änderungsdatum eines Datensatzes zu speichern.

AvalancheImagineBundle

https://github.com/avalanche123/AvalancheImagineBundle

Dieses Bundle integriert Filter in die Template-Engine Twig, mit welchen eine Thumbnail-Erstellung auf Basis von GD2, Imagick oder Gmagick relativ einfach möglich ist. Es werden hierbei sogar unterschiedliche Thumbnail-Größen unterstützt und man kann über eigene Filter-Definitionen die Vorgehensweise bei der Erstellung festlegen. Ich hatte damals eine Kombination mit dem KnpMediaExposerBundle verwendet, doch dieses wird leider nicht mehr gepflegt.

ConsoleBundle

https://github.com/RapotOR/ConsoleBundle

Bei meinem Test-Projekt benötigte ich damals eine Möglichkeit Konsolen-Befehle abzusetzen, ohne wirklich Zugriff auf die Konsole des Webservers zu haben. Mit diesem Bundle war beispielsweise das Leeren des Symfony-Caches problemlos im Browser möglich.

Abschließende Worte

Nach 1,5 Jahren sind vermutlich einige der obigen Informationen inzwischen veraltet, da ich mich damals noch mit Symfony 2.0.0 beschäftigt hatte. Seht es mir also nach, wenn dies der Fall ist. Ich freue mich jedoch über jeden Kommentar zur aktuellen Vorgehensweise bzw. Hinweise auf alternative Bundles.

Hallo! Bist du neu hier? Dann abonniere doch den RSS-Feed dieses nicht mehr ganz so stillen Örtchens, um über meine geistigen Ergüsse auf dem Laufenden zu bleiben. Alternativ besteht auch die Möglichkeit, sich von FeedBurner per E-Mail über meine Ausscheidungen benachrichtigen zu lassen.

Neuen Kommentar schreiben

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Der Inhalt dieses Feldes wird öffentlich zugänglich angezeigt, aber als rel="nofollow" markiert.
Hinweis

Kommentare beleben den Blog! Ich freue mich über jeden Kommentar. Du kannst hier offen Deine Meinung zum Artikel sagen, aber bitte beachte die Netiquette und vermeide es andere zu beleidigen.

Bitte unterlasst es die Kommentare zu SEO-Zwecken zu missbrauchen. Kommentare mit Links, die nicht zu Blogs führen (oder zu Blogs mit Grauzonen-Themen) und/oder Keywords als Namen verwenden, sind nicht erwünscht!

Möchtest Du mir einen Blog-Artikel schmackhaft machen, dann schreib die URL ohne HTML-Tag in den Kommentarbereich und ich werde diesen bei Gefallen verlinken.