Symfony

Home » Frameworks » Symfony

Symfony

Symfony ist ein von der Firma SensioLabs erstelltes PHP Framework. Das bedeutet, es gibt sowohl eine grundlegende Architektur als auch viele Basisfunktionalitäten bereits vor, was uns als Programmierer eine enorme Zeitersparnis bringt. Anstatt bei jedem Projekt das Rad neu zu erfinden können wir hiermit viele Funktionalitäten wiederverwenden beziehungsweise bereits fertige Module (auch Bundles genannt) in unser Projekt einbinden aber natürlich auch unsere eigenen Bundles anderen Programmierern zur Verfügung stellen. Durch die steigende Beliebt- und Bekanntheit von Symfony gibt es hier immer mehr bereits vorgefertigte Bundles – ähnlich den Plugins und Extensions diverser CMS Systeme – und wir können uns ganz der Kernfunktionalität und dem Inhalt unserer Anwendungen widmen. Symfony ist fester Bestandteil von einigen der größten Open-Source-Projekte, wie Drupal, PHPBB, PIWIk und Laravel. Das macht eine eine Weiterentwicklung in alle Richtungen einfacher.

Projekte, die Symfony nutzen:

Quelle: SensioLabs

Symfony ist ein Quelloffenes Framework und gehört zu den MVC-Frameworks. Bei diesen gibt es eine klare Trennung zwischen Daten (Model), Darstellung (View) und Code (Controller) was die Übersichtlichkeit in größeren Projekten bewahrt. PHP Code wird hierbei nicht mit HTML vermischt. So ist bei der generierung der Seiten keine HTML Ausgabe in der Art: echo '<h1>Heading</h1>'; notwendig.

Symfony besteht aus drei Hauptpaketen: Symfony selber, Doctrine und TWIG.

Symfony

Symfony sorgt für die Kommunikation zwischen den einzelnen Klassen und bietet viele wertvolle Funktionalitäten. Mit einer interaktive Konsole ist es möglich, regelmäßige Prozesse wie das anlegen von Controllern zu automatisieren.

Doctrine

Doctrine ist für die Datenbank-Schicht zuständig. So werden zum Beispiel die Tabellen und Relationen auf Basis der PHP-Models (Entities) erstellt. Theoretisch wird kein zusätzliches Datenbankprogramm wie  phpMyAdmin benötigt, um die Datenbank zu verwalten.

TWIG

TWIG ist die Template-Engine welche von Symfony mit geliefert wird. Diese steuert die Präsentations-Schicht (Darstellung der Seite im Browser).

Zur Verringerung der Entwicklungszeit aufwendiger Web-Anwendungen bietet das Framework neben fertigen Bundles eine Reihe von Tools. Bestimmte Routineaufgaben sind bereits automatisiert. Somit können Entwickler voll auf die Anwendungslogik fokussieren und es wird bei der Entwicklung neuer Web-Applikationen auf bereits vorhandene Grundlagen zurückgegriffen, damit hierfür nicht ständig separate und sich bei jedem neuen Projekt wiederholende Entwicklungsschritte erforderlich sind. Auch viele Webanwendungen, die eine hohe Performance erfordern, setzen auf dieses Framework. Neben der optimierten Performance und der Wiederverwendbarkeit von Code bietet die umfangreiche Template-Engine Twig einige Vorteile. So lassen sich beispielsweise mehrere Javascript- und CSS-Dateien dynamisch einbinden, die anschließend automatisch zusammgefasst und gegebenenfalls komprimiert (minified) werden, um die Ladezeiten zu reduzieren. Auch die Wiederverwendbarkeit von Code wird durch Twig optimal unterstützt.

<html>
   <head>
       {% block head %}
           <link rel="stylesheet" href="style.css" />
           <title>Acme Inc - {% block title %}{% endblock %}</title>
       {% endblock %}
   </head>
   <body>
		<ul>      
			{% for user in users %}          
				<li>{{ user.name }}</li>      
			{% endfor %}  
		</ul>
       <div id="content">
			{% block content %}
			{% endblock %}
		</div>
       <div id="footer">
           {% block footer %}
               &copy; Copyright {{ "now"|date("Y") }}.
           {% endblock %}
       </div>
   </body>
<html>

Das automatisierte Caching bringt einen enormen Performance-Vorteil. Gerade bei komplexen Webanwendungen mit einer großen Nutzeranzahl zur gleichen Zeit wird so die Serverlast reduziert.

Die erste Version von Symfony wurde 2005 gelauncht. Seitdem hat sich Symfony als ein beständiges und vertrauensvolles Produkt am Markt etabliert und stößt auf internationale Anerkennung und Beliebtheit. SensioLabs, das Unternehmen hinter Symfony mit mehr als 150 Mitarbeiter und weltweiten Zweigstellen, kümmert sich um die Weiterentwicklung des Frameworks und bietet einen umfassenden Support sowie spezifische Tools, um die Qualität von Symfony Projekten stetig zu steigern.

Ganz Ihren individuellen Business Anforderungen entsprechend können Sie zum einen die Verwendung des kompletten Frameworks (Full Stack) wählen. Zum anderen stehen Ihnen auch die mehr als 30 Stand Alone Komponenten von Symfony zur Verfügung. Von einer simplen Web Applikation, zu einem Online Shop oder einer eigenen Suchmaschine – die Möglichkeiten bei der Verwendung von Symfony sind nahezu unbegrenzt. Auch wenn Seiten mithilfe anderer Content Management Systeme errichtet worden sind, hat man die Möglichkeit, diese mit Symfony zu erweitern und auf dem bereits existierenden Content aufzubauen.

symfony logo

Vorteile für Sie als Kunden:

Experten nutzen Symfony
Nicht nur Anwedungen, sondern ganze Frameworks wie Drupal, eZ-Publish und PIWIK basieren auf Symfony, was eine Weiterentwicklung in alle Richtungen einfacher macht.

Sicherheit
Laravel besitzt eine große Community, so dass mögliche Sicherheitslücken nach bekanntwerden zeitnah ausgemerzt werden. Vor allem durch das Datenbankmanagement und die Template-Engine werden Flüchtigkeitsfehler, welche verheerende Sicherheitslücken wie beispielsweise XSS oder SQL-Injection ermöglichen könnten, automatisch ausgeschlossen.

Internationalisierung
Durch eine integrierte Internationalisierungs-Funktion werden Texte sowie Design getrennt. Somit ist es schnell und einfach möglich, das Projekt in mehreren Sprachen darzustellen.

Collaborative Work
Bei großen Projekten ist es das A und O, dass die Zusammenarbeit bestmöglichst erfolgen kann. Symfony ist prädestiniert dafür. Durch den strukturierten Aufbau kann man getrennt voneinander Arbeiten ohne sich in die Quere zu kommen, dank der Konventionen bleibt man einem einheitlichen Stil treu.

Performance
Durch integrierte Caching-Funktionen wird versucht, die Performance eines Webprojektes zu maximieren. Auch der integrierte Debugger ist ein sehr nützliches Hilfsmittel um Geschwindigkeitshemmer zu identifizieren und auszumerzen.

Wiederverwendbarkeit
Der Vorteil eines Frameworks besteht darin, wiederkehrende Aufgaben zu kapseln, also nur "einmal" programmieren (bzw. im Framework bereits vorzufinden) aber öfters anweden zu können. Bei Symfony ist es möglich, sein Projekt in verschiedene Bundles zu gliedern. Dies geschieht mt dem Hintergedanken diese Bundles getrennt voneinander zu nutzen oder in verschiedenen Projekten mehrmals einzusetzen. Wie bereits erwähnt gibt es auch eine Fülle an fertigen Bundles, welche man in sein eigenes Projekt integrieren und dementsprechend anpassen kann.

Kontaktieren Sie uns jetzt!

Packages

Die Laravel 5 (derzeitige Version) benutzt PHP packaging system Composer dar. Core Updates, aber auch das Einbinden von third-party code wird damit zum Kinderspiel.

Doctrine

Doctrine erstellt aus den Klassen automatisch das Datenbankschema. Tabellennamen, Feldnamen, Beziehungen usw. werden in den Annotations definiert. Des weiteren gibt es sogenannte Repositories welche dem EntityManager (dazu später mehr) weitere Methoden neben den Gettern/Settern spendieren.
Repositories werden deshalb erstellt, damit man sinnvolle Abfragen (z.B. Hole alle Benutzer die sich vor dem TT.MM.YYYY registriert haben) nicht mehrfach schreiben muss und somit an verschiedenen Stellen im Quellcode verwenden kann.

twig

twig ist die template engine von Laravel. Sie ermöglicht das Einbinden von PHP Code in HTML auf einfache und sogar fast schöne Art und Weise. Hierbei helfen zahlreiche Shortcuts. Außerdem lassen sich komplexe Templates und Verschachtelungen leicht realisieren. Insgesamt ist das Arbeiten mit Templates durch twig einfacher, mächtiger und übersichtlicher geworden.

 

Test

Symfony unterstützt Unittests

Ein Unittest prüft, ob eine einzelne Einheit (engl.: Unit) eines Codes wie erwartet arbeitet. Beim objektorientierten Programmieren entspricht die einfachste Codeeinheit einer Klasse. Ein Unittest muss daher im Wesentlichen prüfen, dass jede Interfacemethode der Klasse ordentlich arbeitet. Das bedeutet, der Test überprüft ob die Klasse für verschiedene Eingabeparameter die erwarteten Ergebnisse zurückliefert. Unittests werden in der Regel vom gleichen Programmierer erstellt, der auch die zu testende Klasse geschrieben hat.

Symfony unterstützt den Einsatz von "PHPUnit" out of the box

Symfony Console

Seit Version 3 gibt es das command-line interface Symfony Console, sie vereinfacht das Arbeiten mit Symfony durch zahlreiche Befehle enorm.