Drupal 8 und Symfony

    Drupal Symfony

    Der Kern des CMS Drupal 8 basiert auf Komponenten des Frameworks Symfony 2.

    Durch die Entkopplung wesentlicher Komponenten und den Einsatz von bewährten Open Source Frameworks bietet die Kombination aus Drupal und Symfony ein deutlich höheres Level an Professionalität, Flexibilität und Stabilität in Drupal Core.

    Seit der Version 8 wird Drupal Symfony auch in allen weiteren Releases integrieren und einen wesentlichen Teil der Funktionen in Drupal auf Symfony Komponenten abstellen.


    Was ist Symfony ?

    Symfony ist ein verbreitetes “High Performance PHP Framework” und kommt mit einem Satz an elementaren Komponenten daher, welche laut eigenen Angaben darauf abzielen, Entwicklern die Arbeit schneller und einfacher von der Hand gehen zu lassen, indem es viele Standardfunktionen im Web in Komponenten und Plugins kapselt, die dann von anderen Open Source Projekten wie Drupal verwendet werden können.

    Symfony ist objektorientiert und die Architektur folgt dem MVC Design Pattern, was nach Meinung vieler jenes ist, was Drupal in früheren Versionen gefehlt hat.

    Weiterhin nutzt das Framework das Prinzip der Dependency Injection wie beispielsweise aus Java vom Spring Framework bekannt sein könnte und sorgt durch Entkopplung in der Architektur für mehr Stabilität und Flexibilität im Aufbau von Software.

     

    Suchen Sie das passende Drupal Team? 

    Welche Komponenten stellt Symfony bereit?

    – HttpFoundation
    Die HttpFoundation definiert eine objektorientierte Abstraktion auf die Anfragen und Antworten nach der HTTP Spezifikation. Während in PHP weder eine Anfrage noch eine Ansammlung von globalen Variablen ($_GET, $_POST, $_COOKIE, $_SESSION, usw.) und eine Antwort eine Ansammlung von Funktionsaufrufen (echo, header, setcookie, usw.) darstellt, bietet die HttpFoundation einen objektorientierte Möglichkeit der Handhabe durch Request und Response Objekte.

    – HttpKernel
    Der HttpKernel bietet einen eventbasierten, strukturierten Ablaufprozess von einem Request zu einer Response, indem es zu eingehenden Anfragen den passenden Controller auflöst, Argumente übergibt und Exceptions handhabt.

    – Routing
    Die Routing Komponente abstrahiert das Mapping von URL’s und deren Pfade auf eine Menge von Konfigurationen. Routing Konfigurationen können vorliegen in YAML, XML, PHP, Closures und Annotationen.

    – EventDispatcher
    Die EventDispatcher Komponente ist eine Implementierung des Observer Design Patterns, welches bekanntermaßen eine einfache und flexible Art ist für Erweiterbarkeit zu sorgen. Dieses Dispatcher-Listener Paradigma wird für den gemeinen Modul Entwickler wohl erstmal nicht zur Anwendung kommen, da Drupal auf seinem Hook-System verbleibt – welches denselben Zweck erfüllt, aber nicht ebenso effizient ist.

    – DependencyInjection
    Die DepedencyInjection Komponente stellt dem Frameworknutzer das gängige Inversion of Control Paradigma zur Verfügung, mit dem man Abhängigkeiten entkoppeln kann. Möglich sind hier die Ausprägungen Constructor-, Field- und Setter-Injection. Die Konfiguration geschieht gleichermaßen in YAML, XML und PHP.

    – ClassLoader
    Die ClassLoader Komponente ermöglicht das automatische Laden von Klassen ohne vorheriges require(), sofern es einigen Standard PHP Namenskonventionen genügt. Drupal wird sich wohl dahingehend, anfänglich zumindest im Core, den Klassen- und Namespace-Konventionen angleichen.

    Suchen Sie die passende Web-Agentur?

    Und was kommt mit Symfony sonst noch?

    – HTTP Cache
    Symfony unterstützt standardkonformes HTTP Caching und enthält einen integrierten Reverse Proxy, welcher in PHP geschrieben ist. Neben dem üblichen Seiten Caching wird auch das Cachen von Seitenfragmenten, sogenannte Edge Side Includes (ESI), unterstützt. Der PHP Reverse Proxy, auch Gateway Cache genannt, kann zudem auch durch native Cache Implementierungen, beispielsweise Varnish-Cache oder Squid im Reverse proxy Modus, ersetzt werden. Dadurch dass diese C implementiert sind, sind sie performanter.

    – Twig Theme Engine
    Twig ist die Standard Template Engine in Symfony und für Drupal 8 der Ersatz für das langsamere und unflexiblere PHPTemplate. Inwieweit und wie lange die Template Systeme in Drupal 8 koexistieren werden, bleibt abzuwarten.


    Ausblick

    Soviel als Kurzüberblick zum Symfony Framework, dem neuen robusten OOP Unterbau zu Drupal 8. In den Jahren nach dem Release von Drupal 8 hat Drupal Symfony kontinuierlich weiter im Core als auch in Contrib Modulen adaptiert. Sowohl seitens der Entwicklung, aber auch hinsichtlich der Performanz hat Drupal dadurch an Professionalität gewonnen, wodurch es auch weiter seine Position als Enterprise CMS ausbaut.
    Weiterführende Links:

    [1] http://symfony.com/blog/symfony2-meets-drupal-8
    [2] http://symfony.com/doc/current/book/index.html
    [3] http://drupal.org/community-initiatives/drupal-core
    [4] http://drupal.org/core/release-cycle

    Verwandte Blogbeiträge

    Diese Themen beschäftigten uns und unsere Kunden kürzlich