SilverStripe – CMS+MVC | 13.01.2009
Mein Artikel für die c’t wurde doch ziemlich gekürzt und geändert – die theoretischen Teile wurden durch praktische ersetzt. Hiermit veröffentliche ich die nicht enthaltenen Teile meines ursprünglichen Artikels.
Einleitung
Das Redaktionssystem von SilverStripe wurde von Experten auf seine Benutzbarkeit getestet. Es ist aufgeräumt und klar strukturiert. SilverStripe bietet alle Standard-Features eines modernen CMS: Usermanagement und Rechtevergabe, Unterstützung von OpenID und externer Authentifizierung wie LDAP sowie ein Asset-Management. Darüber hinaus bietet es mehrsprachige Inhalte, Versionierung und Staging. Hervorzuheben ist noch der integrierte Bildeditor zum Nachbearbeiten von hochgeladenen Bildern.
SilverStripe bringt auch einige Module wie ein Forum und ein Blog mit, aber natürlich (noch) nicht in großer Anzahl und nicht so ausgereifte wie die etablierten Systeme. Da die Module aber mit den gleichen Mitteln wie das Kern-CMS und eine Website implementiert werden, sind Erweiterungen leicht umzusetzen und zu erweitern.
Entwicklern, die bisher reine MVC-Frameworks wie CakePHP oder Symfony kennen, bietet SilverStripe ein integriertes und anpassbares Redaktionssystem in einer sauberen Architektur ohne Altlasten. Der entscheidende Unterschied zu anderen CMS-Systemen ist, dass es keinen Unterschied von der Technik der Site-Anpassung zu der Entwicklung von Modulen gibt.
Aus der Praxis
Es hat sich gezeigt, dass SilverStripe und Sapphire eine sehr gute Lernkurve für erfahrene und weniger erfahrene Entwickler hat. Während erfahrene Informatiker die verwendeten Architekturmuster erkennen und anwenden können, sollten auch weniger erfahrene Entwickler nach dem Durcharbeiten der ersten zwei Tutorials direkt mit der Projektentwicklung beginnen können. Die weitere Lernkurve verhält sich ähnlich: Nach und nach lernt man unterschiedliche Komponenten kennen. Dazu trägt bei, dass der Code des Kernsystems sehr gut erforsch- und erlernbar ist.
Erweiterung inklusive
Der Schlüssel zu SilverStripe ist das MVC-Framework Sapphire, das sich an den Rails Prinzipien orientiert: “Don’t repeat yourself”, “Convention over Configuration”, “Model-View-Controller”.
Dieses Framework beinhaltet:
- eine MVC-Struktur
- ein Komponentensystem
- ein ORM-System
- ein Formular- und Validierungs-Framework
- ein objektorientiertes Templatesystem
Mit diesem Framework können sowohl komplexe Websites als auch Anwendungen mit unterschiedlichen Datentypen und Relationen umgesetzt werden.
Historie
Im Februar 2007 wurde SilverStripe 2.0 als Open Source Produkt freigegeben. Durch die Anerkennung für den “Google Summer Of Code” und den “Highly Open Participation Contest” konnten wichtige Features wie mehrsprachige Inhalte, Editieren von Bildern im System und Unterstützung für OpenID hinzugefügt werden. Im Sommer 2008 erregte SilverStripe Aufmerksamkeit, als es für demconvention.com, die Website für die Generalversammlung der
demokratischen Partei der USA, eingesetzt wurde. SilverStripe steht im Gegensatz zu anderen Systemen unter der BSD-Lizenz (neu). Dadurch können Agenturen das Redaktionssystem komplett “re-branden” und ein spezielles Agentur-Redaktionssystem kommerziell vermarkten.
Aus der Praxis
SilverStripe unterstützt den typischen Arbeitsablauf in einer Agentur durch eine stringente Trennung der Rollen von Entwicklern und Redakteuren. Die Konfiguration von Modulen und Templates erfolgt fast ausschließlich auf der Ebene des Dateisystems, so dass sämtliche Quellcodes versioniert werden können und Umgebungen reproduzierbar bleiben.
Model-View-Controller
Model-View-Controller (MVC) bezeichnet ein Architekturmuster zur Strukturierung von Software. Dabei werden das Datenmodell, die Präsentation und die Steuerung getrennt. Erstmals wurde das MVC-Konzept 1979 für Benutzungsoberflächen in Smalltalk beschrieben, gewann aber in letzter Zeit vor allem durch das Ruby Framework Rails an Aufmerksamkeit.
MVC orientierte Frameworks wie zum Beispiel Rails, CakePHP oder auch Django benutzen MVC als Hauptstrukturierungsmerkmal des Codes. Auch in SilverStripe gibt es zu jeder veröffentlichten Klasse einen Controller und einen View (ein Template).
Zentrales Element ist die Director-Komponente. Diese verwaltet die URL-Regeln, mit denen die Controller aufgerufen und konfiguriert werden. Bei einem Standardaufruf der Form
http://localhost/urlsegment/viewname wird auf Grundlage des Seitennamens das korrekte Seiten-Objekt instantiiert, der zugehörige Controller geladen und er View gesucht und ausgeführt.
Komponentensystem
Sapphire verwendet objektorientiertes PHP und erweitert es um einige Möglichkeiten. Die meisten dieser Techniken arbeiten unsichtbar für den Site-Entwickler im Hintergrund. Die Basisklasse Object, von der alle Sapphire-Klassen abgeleitet werden, bietet
diverse Hilfsfunktionen, die die Möglichkeiten des PHP-Klassensystems erweitern. Viele dieser Methoden dienen der Introspektion sowie der dynamischen Erweiterung von PHP-Klassen.
Datenobjekte: ORM
SilverStripe arbeitet mit der Mysql-Datenbank (eine Datenbank-Abstraktion für die Nutzung anderer Datenbanken ist in Arbeit). SilverStripe benutzt ein codebasiertes ORM: Datenstrukturen werden in PHP definiert und ein Setup-Mechanismus sorgt für die korrekte Struktur in der Datenbank.
Release 2.3
Das kommende Release 2.3 wird einen großen Sprung in Sachen Performance machen und vor allem das sogenannte Scaffolding, also die automatische Bereitstellung von Formularen weiter vereinfachen. Auf Grundlage einer Modelldefinition kann wie z.B. bei Django ein komplettes anpassbares Admin-Interface generiert werden.
Weiterhin wurden die möglchen Sicherheitseinstellungen erweitert, der Text-Editor wurde auf TinyMCE3.2 upgedated und es gibt jetzt automatisch die Möglichkeit von REST- und SOAP-APIs.
