Was ist CakePHP?
- Kurze Erklärung zum Begriff Framework
## Paket mit vorgefertigter Entwicklungsumgebung
## Frameworks sind für verschiedenste Sprachen verfügbar (JavaScript, Ruby, Python, …)
## Sollen meist zur schnelleren Entwicklung von Applikationen dienen
## Haben oft verwendete Funktionen bereits im Kern integriert um den Umgang mit der jeweiligen Sprache zu erleichtern.
- Angelehnt an das Framework Ruby on Rails, nur eben auf PHP-Basis
- Entwicklung seit 2005 durch die Cake Software Foundation bzw. der Community
- Open-Source / MIT-Lizenz
Kurze Faktenübersicht
- Sowohl kompatibel mit PHP4 als auch PHP5
- Unterstützung der Datenbanken MySQL, PostgreSQL und ADOdb
Es kann zu jedem Projekt zudem eine Datenbank für die Produktion sowie eine alternative Datenbank für den Prototypen hinterlegt werden - Saubere URL-Struktur bereits integriert (domain.de/controller/action/parameter)
Eigene URL-Layouts können über die Routes-Config angepasst werden
Es können beliebig viele Parameter an die jeweilige Action übergeben werden - Auch für Nicht-PHP-Profis geeignet
Gute Einstiegstutorials / Weblogs und Screencast zu verschiedensten Themen
Basiskenntnisse sollten jedoch vorhanden sein, ebenfalls ein Verständnis für OOP - Minimale Einstiegskonfiguration, vieles läuft über „Naming Conventions“
Naming-Conventions arbeiten automatisch über die Modelnamen
Models werden immer im Singular angelegt z.B. User
Controller werden im Plural angelegt z.B. Users
View werden nach den jeweiligen Aktions angelegt, z.B. in /app/users/add.thtml
Die zum Model gehörige Datenbank muss im Plural angelegt werden, also z.B. tbl_users - Klare Strukturierung durch MVC-Prinzip (Model, View, Controller)
Trennung von Abhängigkeiten, Programmcode und Output in strikte Ordnerstrukturen - Integrierte Helper für HTML, JavaScript, Ajax, Formulare…
Helper können bestimmte Einbindungen vereinfachen
Bilder können somit z.B. mit einem automatisch generierten Pfad eingebunden werden
Javascript und CSS-Dateien können ebenfalls automatisch geladen werden
Flash-Messages können für kurze Statusberichte schnell und einfach genutzt werden - Validierungs-Modul zur automatischen Datenprüfung
Im Model können direkt Regeln für die einzelnen Datenfelder hinterlegt werden
Wird in einem abgesendeten Formular eine der Regeln verletzt, so bricht dieses automatisch ab und kann eine Fehlermeldung hervorrufen. - Scaffolding
Verspricht kurze Arbeitszeiten bis zum ersten Prototypen
erstellt aus den aktuellen Datenbankfeldern vorgefertigte Actions bzw. Formulare für Add, Edit, List und Delete.
Sollte wirklich nur bei der Erstellung eines ersten Prototypen verwendet werden, da individuelle Layouts für die Actions mit Scaffolding nicht erstellt werden können. - Eingebauter Caching-Komponente zum beschleunigen der Applikation
Vom Interpreter geparste Views können automatisch für einen angegebenen Zeitraum (z.B. eine Stunde) auf dem Server gecached werden, um somit die Rechenzeiten zu verkürzen.
Sollten während des Zeitraums Änderungen an der Datenbanktabelle gemacht werden, so wird der Cache automatisch aktualisiert
Einzelne Objekte die Ständig auf dem aktuellen Stand bleiben müssen können durch - eingebautes Filtern von durch Formulare eingespeisten Schadcode
Cross Side Scripting wird in vielen Fällen schon durch den Cake-Core herausgefiltert
Möchte man auf Nummer sicher gehen kann man auf die Sanitize-Klasse zurückgreifen um schadhaften Code aus einem String zu entfernen. - Benötigt werden: LAMP bzw. WAMP-Umgebung, Erfahrung in OOP von Vorteil, lernt man jedoch spätestens während der Nutzung meist eh sehr schnell, mod_rewrite-Modul wenn saubere URLs benötigt werden, ist jedoch kein Muss
Die MVC-Architektur
Model
- Regelt automatisch mögliche Abhängigkeiten zwischen den Tabellen (z.B. über benötigte Join-Abfragen)
- Stellt Methoden zur Datenverarbeitung aus der Datenbank bereit
Beispiel:
$this->User->findByName($alias) = Select * from users where name = '$alias';
- Ist für die Validierung des Datenmaterials verantwortlich
Controller
Regelt die einzelnen Actions und das Verhalten des jeweiligen Models.
Beispiel:
Model|User (Singular)
Controller|Users (Plural)
Actions|add, edit, delete, login, logout
Würde man nun in einer Cake-Applikation einen User editieren wollen, so würde die Standard-URL dafür wie folgt lauten:
http://www.domain.de/users/edit/macx
View
- Ist zuständig für alle Ausgaben an den Browser. Hier können auch unterschiedliche Templates und Seitenvorlagen definiert werden.
- Wiederkehrende Bereiche wie Infoboxen können unter den so genannten „Elements“ abgelegt um mit variablem Inhalt gefüllt werden.
- In der View-Ebene hat man zudem Zugriff auf die angesprochenen Helper.
Beispiel:
$html->input('User/name',array('size'=>'40'));
Dieser Code würde automatisch ein Inputfeld zum Datenfeld „Name“ in der Tabelle „users“ bereitstellen.
Links zum Thema
- CakePHP-Manual
- Die Cake-Bakery
- Das Cake-Tutorial: Build a Blog in 15 Minutes
- CakeForge – Eine Datenbank mit Projekten auf CakePHP-Basis
- CakePHP in den deutschen GoogleGroups
- Offizieller IRC-Channel zu CakePHP: #cakephp auf irc.freenode.net
Christian ist selbständiger Webdesigner und lebt in Magdeburg. Seine Firmenwebseite findet ihr unter xulu.net und seinen privaten Blog unter hackthenet.de. Beeindruckt hat Christian unter anderen durch diese jQuery-Demo.