08. August 2013

Ist "Symfony" nicht falsch geschrieben?

Hab ich als erstes gedacht, als ich von diesem neuen "Ding" der Webprogrammierung hörte. Als Pioniere des Internets, welches für uns alle noch Neuland ist, leben wir von artd webdesign hier in Bern natürlich immer am Puls der Webentwicklung bzw. der Webentwicklung-Entwicklung. Auf der Suche nach interessanten und innovativen Möglichkeiten zur effizienten Software Entwicklung sind wir neben Frameworks wie ZEND, Yii, CakePHP auf Symfony gestossen, einem wahren Trüffel unter den PHP-Frameworks - eine kleine Einführung...

 

logo symfony header

 

Was ist Symfony?

Symfony ist ein PHP Framework bei dem das Model-View-Controller (MVC) Pattern verwendet wird. Als modernes Framework, mittlerweile in der Version 2.3.3, basiert es natürlich auf PHP 5. Welche Vorteile MVC bietet, sollte dem geschulten Web – Entwickler bereits bekannt sein. Wer eine kleine Auffrischung benötigt: Wikipedia

 

Warum Symfony?

Symfony hat viele Aspekte, die das Herz eines Programmiers höher schlagen lassen. Interessant ist hier zum Beispiel die Konsolenanwendung, welche mit einfachen Befehlen z.B. dafür sorgt, dass voll funktionsfähige Teilapplikationen mit nur einem Command erstellt werden können.

Diese Teilapplikationen heissen Bundles (vergleichbar mit Plugins) und beinhalten alles was zum Funktionieren der Teilapplikation nötig ist, d.h. sie lassen sich unglaublich leicht importieren und exportieren. Symfony selbst ist „nur“ ein solches Bundle, wodurch Symfony auch leicht in bestehende Projekte integriert werden kann.

Symfony stellt ausserdem Datenbankzugriffe über ORM-Layer mit Hilfe von z.B. der Doctrine Library zur Verfügung. Eine objektrelationale Abbildung (object-relational mapping, ORM) ermöglicht dem Entwickler das extrem vereinfachte Ablegen seiner Objekte in einer Datenbank. Die abgelegten Daten können dann, und jetzt wird es spannend, auch wieder als eben diese Objekte ausgelesen werden, ohne manuell jeden einzelnen Wert aus den Spalten kratzen zu müssen um diese dann zu einem neuen Objekt zusammen zu stellen.

Vorbildlich ist auch das Prinzip „Konvention vor Konfiguration“, wobei die nötige Konfiguration auf ein Minimum reduziert werden soll. So ist es weitgehend möglich bei Angaben der exakten Namen auf Pfadangaben komplett zu verzichten. Symfony sucht sich aus dem Kontext und dem Namen selber die entsprechende Location. Das hilft z.B. enorm beim Routing, dem Zuweisen verschiedener URLs zu entsprechenden Controllern.

Symfony verinnerlicht noch unendlich viele weitere „best practices“ der Objekt-orientierten Programmierung, wie z.B. Dependency Injection, Namespaces (PHP 5.3) und Templates, die auf twig basieren und somit z.B. Vererbung und Erweiterung untereinander ermöglichen, womit reusability einen unglaublichen Sprung nach vorne macht. Alle Vorteile aufzuzählen würde mindestens ein Buch benötigen, von denen es auf der Webseite von Symfony zur Zeit vier kostenlos zum Download gibt – gute Dokumentation ist also gewährleistet.

Das Highlight aber zum Abschluss. Symfony ist extrem flexibel. Egal welche Vorteile die oben genannten Aspekte einem bringen mögen, sie sind kein Zwang. Man muss nicht mit ORM arbeiten, man muss auch nicht gegebene Namenskonventionen beachten. Wer darauf steht endlos lange Datenbank Queries selber zu verfassen ist dazu herzlich eingeladen. Es können auch weiter HTML-Templates verwendet werden, die Konfiguration kann mit PHP oder XML, anstatt mit dem bevorzugten YAML Format vorgenommen werden.

 

Symfony und CMS

Denkbar wäre auch, Symfony für die Entwicklung von Joomla oder Typo3 einzusetzen. Prinzipiell ist es durch die Flexibilität von Symfony Komponenten ohnehin möglich, diese für alle Arten von Projekten einzusetzen. Das blosse Integrieren einer externen Symfony Komponente in die Entwicklung einer Joomla Extension jedoch wird in den meisten Fällen zur Folge haben, dass man zwei Lösungen für ein Problem zur Verfügung hat. Bei komplexeren Joomla Extensions würde es eventuell Sinn machen, da hier meistens externe Lösungen zusätzlich zur Joomla Platform benötigt werden.

Interessanterweise werden einige Komponenten von Symfony in Drupal 8 übernommen. Und dabei geht es nicht um kleinere Änderungen, sondern um einen grossen Schritt den Drupal hier vorhat. Es werden grundlegende Komponenten übernommen wie die HttpFoundation, der HttpKernel und das Routing System. Drupal macht bis jetzt vieles anders als Andere. Das bedeutet nicht, dass Drupal schlecht ist, die Frage ist nur, ob die Vorteile die Nachteile überwiegen. Mit der Integrierung von Symfony Komponenten geht Drupal einen Weg, das bekannte CMS für mehr Entwickler zugänglich zu machen, war doch die Lernkurve sowohl für PHP Neueinsteiger als für PHP Experten ziemlich steil.





Schreibe einen Kommentar

Bitte achte darauf, alle Felder mit einem Stern (*) auszufüllen. HTML-Code ist nicht erlaubt.

team work2