Inhaltsverzeichnis
CakePHP, kurz Cake, ist ein in PHP geschriebenes quelloffenes Web-Framework für PHP 4 und 5. CakePHP ist angelehnt an Ruby on Rails und folgt ebenfalls dem Schema des Model View Controller (MVC). Weitere Gemeinsamkeiten mit Ruby on Rails sind die zugrunde liegenden Prinzipien Don’t repeat yourself (DRY) und Konvention vor Konfiguration.
Die Beschreibung kann man in wenigen Zeilen selber nicht besser machen 😉
Meine Entscheidung für CakePHP
Ich habe mir vor einigen Jahren mehrere Frameworks wie Symfony, Zend Framework angesehen und bin auch auf CakePHP, damals noch Version 1.2, gestossen – was für ein Glück. Denn ich hatte lange nach einem Framework gesucht, was meiner Arbeitsweise entgegen kommt. Anstatt jetzt hier über die Vor- und Nachteile diverser Frameworks zu sprechen (habe andere schon episch gemacht, einfach mal cake vs. symfony googlen), will ich einfach beschreiben, was mich an CakePHP so fasziniert.
Die kurze Variante
- Datenbanktabellen und – spalten richtig benennen und nach einem kleinen Backvorgang steht die Anwendung, kein Witz!
siehe auch Artikel Scaffolding. - Man kann Standard/Out-of-the box bleiben oder gezielt individuelle Funktionen umsetzen, und das auch noch in Kombination!
- Mit der Schichtentrennung MVC ist direkt eine langfristig wartbare Basisstruktur im Projekt
- Open Source und PHP: Keine Kosten und die Power des Webs, was will man mehr?
- Nicht nur MySQL: Auch MS SQL und Oracle lassen sich nutzen
- Leichtgewichtig: 2.0.0-RC3 sind 6,23 MB (zum Vergleich ZendFramework-1.11.11-minimal sind entpackt 23,3 MB)
Die lange Version kommt nachfolgend und auf den Unterseiten, siehe rechts.
Philosophie
CakePHP versucht, die Konfiguration auf ein Minimum zu beschränken. Nachdem die Verbindung zur Datenbank erstellt ist, ermittelt CakePHP die Struktur des zugrunde liegenden Datenmodells anhand von Namenskonventionen. Hierbei werden keine Konfigurationsdateien benötigt, dieses Prinzip ist als Convention over Configuration (CoC) bekannt.
Model – View – Controller (MVC)
CakePHP ist nach dem Prinzip Model – View – Controller (MVC) aufgebaut. Das Konzept verfolgt den Ansatz, den Quellcode der Anwendung gezielt in drei logische Schichten zu trennen. Ziel ist ein modularer Programmentwurf, der eine spätere Änderung oder Erweiterung erleichtert und eine Wiederverwendung der einzelnen Komponenten ermöglicht.
In der untersten Schicht des Datenmodells (engl. model) werden die zugehörige Datenbanktabellen und Abhängigkeiten zu anderen Models (und damit anderen Tabellen) gespeichert. Jedes Model bringt eine Anzahl an Methoden mit, die zur Verwaltung der Daten genutzt werden. Mit der Anlage des Models werden die entsprechenden Methoden zum Lesen, Speichern, Verändern
und Löschen von Datensätzen bereitgestellt (Create, Retrieve, Update, Delete = CRUD-Funktionalität). Darüber hinaus werden weitere Funktionen mitgeliefert, z. B. zum Filtern oder Sortieren von Daten. Die Programmsteuerung übernimmt der Controller, der Benutzeraktionen aus der Präsentationsschicht (engl. view) entgegennimmt und auswertet. Der Controller führt die
verschiedenen Funktionen (CRUD) aus und verbindet auf diese Weise Model und View.
Die View hat einzig und allein die Aufgabe, die Daten darzustellen und Benutzereingaben anzunehmen, um sie an den Controller weiterzureichen. CakePHP verfügt über ein Template-System mit unterschiedlichen Themes und häufig benötigten Funktionen für Oberflächenelemente wie Tabellen oder Links.
Open Source
Durch das quelloffene Framework entstehen keine weiteren Lizenzkosten, die das Projektbudget belasten. Mit dem Releasestand 2.x verfügt das Framework über die notwendige Reife und gleichzeitig über das Potenzial zur kontinuierlichen Weiterentwicklung durch die Entwicklergemeinschaft. Da das System nicht proprietär ist, können einfach bei Bedarf externe Entwickler hinzugezogen
werden.
PHP
Seit 2000 entwickel ich selbst oder leite Projekte, die PHP nutzen. Deshalb sind Frameworks, die auf Ruby oder Java basieren, nicht meine Favoriten. Es sollte schon einen sehr guten Grund geben, sich auf eine neue Sprache einzulassen. Ich lerne ja auch nicht so etwas wie TypoScript, wenn ich ein CMS benutzen will 😉
Dokumentation, Tutorials & Co.
Ein guter Start ist das Kochbuch,
Orientiert am alten Spickzettel (Version 1.2) wurde eine ausführlichere HTML-Version erstellt.
Es gibt einige gute Tutorials auf Youtube.