Zunächst einmal sollten wir erwähnen, dass Cotonti der Nachfolger von Seditio CMS ist, das selbst der Nachfolger von Land Down Under ist. Das bedeutet, dass es sich nicht nur um ein neu entstehendes Portal-System handelt, sondern um einen Erben von über 9 Jahren hochwertiger Entwicklungsarbeit. Dies bedeutet, dass Cotonti als neues Projekt dazu neigt, den wichtigsten modernen Webentwicklungstrends zu folgen, dabei aber gleichzeitig die besten Traditionen der „alten Schule“ bewahrt.
Natürlich könnten Sie sagen, dass dies veraltet und überholt ist und endgültig aussterben sollte. Vielleicht glauben Sie, dass objektorientierte Programmierung der Retter der Welt ist und das einzige Paradigma sein wird, das überlebt. Falls Sie wirklich so denken, sollten Sie sich eine andere, vollständig objektorientierte Plattform ansehen. Wir haben uns jedoch aus drei einfachen Gründen bewusst für diesen Ansatz entschieden:
Es hält den Code sehr sauber, direkt und leicht verständlich.
Auf diese Weise übertrifft Cotonti in Bezug auf die Leistung andere Content-Management-Systeme.
Und so hebt es sich in einem überfüllten CMF/CMS-Markt von der Masse ab, der oft von Schlagwörtern wie „echtes OOP“ oder „echtes Web 2.0“ dominiert wird, die viel Lärm machen, aber für die tägliche Arbeit wenig Nutzen bringen.
Andererseits ist Cotonti nicht so primitiv und konservativ, wie Sie vielleicht denken. Der Kern ist zwar größtenteils prozedural, aber einige spezialisierte Funktionen und Schnittstellen werden durch nützliche Klassen und Bibliotheken ergänzt. Wir zögern also nicht, das Beste aus beiden bekannten Programmierkonzepten zu nutzen.
Wir verwenden Objekte dort, wo sie am sinnvollsten sind. Zum Beispiel nutzt Cotonti eine PDO-Datenbankabstraktionsebene, die die Ausdruckskraft objektunabhängiger Klassen mit der Leistung nativer PHP-Erweiterungen kombiniert.
Ein weiteres häufiges Einsatzgebiet von Polymorphismus, Kapselung und Vererbung (den drei Grundprinzipien der objektorientierten Programmierung) ist die Cache-Bibliothek.
Cotonti verfügt über mehrere Caching-Ebenen für verschiedene Optimierungszwecke und unterstützt mehrere Cache-Speicher, bietet jedoch eine einheitliche Schnittstelle. Sie müssen sich also keine Gedanken darüber machen, welchen Treiber Sie verwenden oder wie dieser im Hintergrund funktioniert.
Unsere Template-Engine ist ebenfalls objektorientiert, aber das ist nur eine Randnotiz. Was Sie jedoch interessieren könnte: Das Cotonti-Team entwickelt in einem geheimen Labor eine eigene objektorientierte Klassenbibliothek.
Diese Bibliothek baut weiterhin auf dem prozeduralen Cotonti-Kern auf, verwendet jedoch einige der besten objektorientierten Techniken, um eine außergewöhnliche Wiederverwendbarkeit gemeinsamer Strukturen und Code-Muster zu ermöglichen.
Mit einer solchen Bibliothek kann ein Entwickler in wenigen Minuten neue geschäftliche und inhaltsbezogene Anwendungen schreiben.
Model-View-Controller (MVC) ist eines der beliebtesten Designmuster für Webanwendungen. Die meisten modernen Frameworks bestehen aus diesen drei Schichten:
Model. Repräsentiert Daten in Form von Entitäten, Relationen, Datensätzen und Eigenschaften. Einige Entwickler denken, dass das Speichern von Daten in einer Datenbank oder die Verwendung einer Abstraktionsschicht bereits ein Modell ausmacht. Erfahrenere Entwickler wissen jedoch, dass dies tatsächlich die Abbildung der Anwendungsdatenstruktur und der grundlegenden Abstraktionen zur Datenverwaltung ist.
View. Basierend auf dem Prinzip, dass das, was der Benutzer sieht, nicht alles ist, was die Anwendung tut. Eine separate View-Schicht trennt das Layout von der Geschäftslogik und verwendet spezielle Prozeduren zur Ausgabeerstellung. In den meisten Fällen bedeutet dies die Verwendung einer Template-Engine.
Controller. Oft der Ort, an dem „alles andere“ erledigt wird. In reinem MVC ist der Controller ein Ereignis-Handler und das gesamte System basiert auf Ereignissen. Verschiedene Controller sind für verschiedene Teile der Anwendung verantwortlich, reagieren auf Ereignisse und steuern den Ablauf der Anwendung.
In Cotonti funktioniert das Modell ein wenig anders: Datenmodelle werden in der Regel mit traditionellem SQL definiert.
Wir setzen keine Einschränkungen für die Struktur und Logik des Modells, sodass Modulentwickler die Anwendung so gestalten können, wie sie es für richtig halten. Für Datenmanipulation und Abfragen wird die PDO (PHP Data Objects)-Schicht verwendet.
Cotonti ist auf die CoTemplate-Engine zugeschnitten. Sie ist rückwärtskompatibel mit der weit verbreiteten XTemplate-Engine und bietet alle ihre Funktionen.
Blöcke, die durch den Controller gesteuert werden, und darin ersetzbare Variablen („TPL-Tags“) ermöglichen eine klare Trennung von Layout und Logik. CoTemplate bietet sowohl statische als auch logikbasierte Strukturen (IF/ELSE, BEGIN/END) und optimiert die Verarbeitung durch Caching.
Das System besteht aus einer Reihe von Bibliotheken und Kernskripten. Jede Bibliothek, die eine bestimmte Funktion bereitstellt, wird als API bezeichnet.
Das zentrale API umfasst ein Bootstrap-Skript, das die minimale CMS-Umgebung lädt, sowie einige Standard-Skripte, die als „Core“ bezeichnet werden.
Zusammen mit dem Benutzerverwaltungsmodul und dem Admin-Backend bildet dies das Content-Management-Framework (CMF). Das CMF wird zur Erstellung von Modulen verwendet.
Module sind die größten Bausteine einer Website. Ein Modul repräsentiert einen bestimmten Bereich der Website mit einer einzigartigen Funktion für den Endbenutzer. Module sind unabhängig voneinander, können jedoch miteinander interagieren.
Plugins werden verwendet, um den Kern und die Module zu erweitern.
Zusammen werden Module und Plugins als „Erweiterungen“ bezeichnet, da sie die Kernfunktionalität ergänzen. Erweiterungen bieten unbegrenzte Anpassungsmöglichkeiten und vermeiden viele Probleme bei zukünftigen Updates.
Cotonti war eines der sichersten PHP-CMS (basierend auf Fehlerberichten) und hat Stabilität zu einem seiner Hauptziele gemacht.
Die Entwickler sind sich gängiger Sicherheitsrisiken wie SQL-Injections, Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF) und typischen PHP-Fallen bewusst und implementieren sowohl passive (sauberes Coding, Bugfixes) als auch aktive (spezielle Algorithmen) Schutzmaßnahmen.
Das Berechtigungssystem basiert auf Access Control Lists (ACL) und Access Modes und ermöglicht eine klare Verwaltung von Benutzerrechten.
Zusätzlich gibt es integrierte Anti-Spam- und Anti-Hammering-Schutzmaßnahmen.
Cotonti bietet leistungsstarke URL-Rewriting-Tools, anpassbare Titel und Meta-Daten sowie zahlreiche Konfigurationsoptionen für SEO.
Zusätzliche SEO-Verbesserungen können über Plugins integriert werden.
Cotonti folgt modernen Webentwicklungstrends und bietet leistungsstarke Funktionen wie AJAX-Unterstützung, RSS-Feeds, erweiterte Suche und Tagging, sowie Integration mit sozialen Netzwerken und Webdiensten.
Mit Cotonti sind Ihren Möglichkeiten kaum Grenzen gesetzt.