CakePHP

CakePHP
CakePHP
Cake-logo.png
Entwickler Cake Software Foundation
Aktuelle Version 2.0[1]
(17. Oktober 2011)
Betriebssystem plattformunabhängig
Programmier­sprache PHP
Kategorie Framework
Lizenz MIT-Lizenz
Deutschsprachig Nein
cakephp.org

CakePHP, kurz Cake, ist ein in PHP geschriebenes quelloffenes Web-Framework. 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.

Inhaltsverzeichnis

Geschichte

CakePHP wird seit 2005 entwickelt. Es entstand parallel zur steigenden Popularität von Ruby on Rails und dem Wunsch nach einem ähnlichen MVC-Framework auf PHP-Basis.

Abspaltung Lithium

Im Oktober 2009 verließen der Projektmanager Garrett Woodworth und Entwickler Nate Abele das Projekt, um sich Lithium, einem ursprünglich als "Cake3" geplanten Framework, zu widmen.

Philosophie

Analog zu Ruby on Rails wird auch bei CakePHP versucht, die Konfiguration auf ein Minimum zu beschränken. Das heißt, dass der einzige Konfigurationsschritt die Festlegung der Verbindungsparameter zum Datenbankserver ist. Die Zuordnung von z. B. Models zu Datenbanktabellen geschieht über die Namensgleichheit in Singular und Plural, nicht über Konfigurationsdateien. Dieses Prinzip ist als Convention over Configuration (CoC) bekannt. Beispiel:

Model
User, Group (Singular)
Controller
UsersController, GroupsController (Plural)
Datenbanktabelle
users, groups, groups_users' (Plural, letztes Beispiel zeigt den Namen für eine Relationstabelle für hasAndBelongsToMany. In diesem Fall werden die zu verknüpfenden Tabellen in alphabetischer Reihenfolge angegeben)
Fremdschlüssel in Datenbanktabellen
user_id, group_id (Singular plus _id)

CakePHP erkennt zum Beispiel Fremdschlüssel in Datenbanktabellen automatisch und erzeugt dementsprechend die korrekten Joins.

Besonderheiten

Im Vergleich zu anderen Web-Frameworks stellt CakePHP nur geringe Anforderungen an den Webserver. Es unterstützt PHP ab Version 5.2 und benötigt keine eigene Datenbank für die Anwendung, sondern erlaubt es, Datenbanktabellen mit Präfixen zu verwenden. Einzig für die Verwendung von sogenannten Console Applications ist ein Zugriff per Kommandozeile notwendig.

Schichten

Model

Als Backend einer CakePHP-Applikation kommt eine Datenbank zum Einsatz. Es werden folgenden Datenbankmanagementsysteme unterstützt:

Das sogenannte Model stellt die vorhandenen Daten dar. In einer Benutzerverwaltung, welche mit Benutzer und Benutzergruppen arbeitet, sind die Benutzer (user) und Benutzergruppen (usergroup) die Models.

Jedes Model bringt eine Anzahl an Methoden mit, welche zur Verwaltung der Daten genutzt werden. Zum Beispiel gibt es Methoden zum Lesen aus der Datenbank (Model::read() oder Model::findAllById()), zum Speichern der Daten in die Datenbank (Model::save() oder Model::saveField()) oder zum Erstellen eines neuen Datensatzes (Model::create()). Somit ist die CRUD-Funktionalität in den Models schon integriert.

Die Beziehungen zwischen verschiedenen Models werden über sogenannte Associations (Beziehungen) festgelegt. Dabei existieren folgende Möglichkeiten: hasOne, belongsTo, hasMany und hasAndBelongsToMany. CakePHP kann damit automatisch die benötigten Datenbankabfragen (inklusive eventuell benötigter Join-Befehle in SQL) generieren. Die Konfiguration geschieht durch die Einhaltung bestimmter Konventionen bei der Vergabe der Namen von Datenbanktabellen, Modellen und Controllern (siehe Abschnitt Philosophie). Es werden keinerlei Konfigurationsdateien benötigt.

Models können um Behaviours erweitert werden. Es handelt sich dabei um Klassen, in denen Funktionalität zur Erweiterung des Models gekapselt wird. Als Beispiel dient die Tree-Behaviour: sie erweitert ein beliebiges Model um Methoden, die zur Manipulation von Baumstrukturen dienen. Man sagt, das Model verhält sich wie ein Baum (Tree) - daher der Name Behaviour. Behaviours folgen dem Prinzip Don’t repeat yourself, da sie in mehreren Models verwendet werden können.

In Models können Validierungsinformationen hinterlegt werden, die bestimmen, was Felder enthalten dürfen oder nicht. In Formularen wird dann bei Validierungsfehlern automatisch eine Fehlermeldung angezeigt.

Controller

Der Controller enthält die sogenannte Geschäftslogik und bietet Schnittstellen, um mit dieser zu interagieren. Diese Schnittstellen werden analog zu Ruby on Rails Actions genannt.

Eine HTTP-Anfrage (beispielsweise http://example.org/controller/action/parameter) enthält den Namen des Controllers und die auszuführende Methode (Action), die vom Dispatcher ausgewertet und dann an den entsprechenden Controller weitergeleitet werden. Es können auch Parameter für die Methode übergeben werden. Das Aussehen der URLs ist mithilfe von Routen sehr flexibel anpassbar.

Controller können durch Components in ihrer Funktionalität erweitert werden. CakePHP enthält selbst viele Komponenten, z. B. für die Session-Verwaltung, Request-Handling und Sicherheit. Auch Access Control Lists lassen sich realisieren.

Formulardaten, die der Controller von der jeweiligen View erhält, können mit der Funktion „Sanitize” automatisch auf Malicious Code gefiltert werden, um SQL-Injections zu vermeiden.

View

Unter einem View versteht man die Präsentationsschicht einer CakePHP-Applikation. Es handelt sich bei einem View um ein Template, welches durch die Ausgabedaten des jeweiligen Controllers mit Inhalten gefüllt wird. Dabei kann beliebiger PHP-Code in einem Template eingebettet werden. Views können zudem auch zwischengespeichert werden.

Für sich wiederholende Ausgaben in einem Projekt kann man auf Elements zurückgreifen, welche man sich als Templates innerhalb von Templates vorstellen kann.

Außerdem gibt es Helper, die häufig wiederkehrende Codes erzeugen, wie z. B. HTML-Formulare, JavaScript-Skripte und Code für AJAX-Kommunikation mit dem Server.

In der Entwicklungsphase kann auf die Erstellung von Views auch verzichtet werden, indem man im Controller die Scaffolding-Option nutzt. Dabei werden dynamisch Views zur Manipulation der Tabellen erstellt.

Ähnliche Projekte

Literatur

  • Dirk Ammelburger, Robert Scherer: Webentwicklung mit CakePHP. O'Reilly, ISBN 3-89721-863-1
  • David Golding: Beginning CakePHP: From Novice to Professional. Apress, ISBN 1-4302-0977-1 (englisch)
  • Ahsanul Bari, Anupom Syam: CakePHP Application Development: Step-by-step introduction to rapid web development using the open-source MVC CakePHP framework. Packt Publishing, ISBN 978-1-84719-389-6 (englisch)

Weblinks

Einzelnachweise

  1. CakePHP 1.3.11 released. Abgerufen am 14. September 2011.

Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Cakephp — Entwickler: Cake Software Foundation Aktuelle Version: 1.2.2.8120 ( …   Deutsch Wikipedia

  • CakePHP — Тип программный каркас для создания веб приложений (CMF) Разработчик Cake Software Foundation Операционная система Кроссплатформенное программное обеспечение Последняя версия …   Википедия

  • CakePHP — Saltar a navegación, búsqueda CakePHP Desarrollador Cake Software Foundation cakephp.org Información general …   Wikipedia Español

  • CakePHP — Infobox Software name = CakePHP caption = The CakePHP Default Page collapsible = yes developer = Cake Software Foundation, Inc. latest release version = 1.1.19.6305 latest release date = release date|2008|01|01 latest preview version = 1.2.0.7296 …   Wikipedia

  • CakePHP — Pour les articles homonymes, voir Cake. CakePHP …   Wikipédia en Français

  • Cakephp — …   Википедия

  • Сравнение каркасов веб-приложений — Это сравнительная таблица фреймворков веб приложений. Содержание 1 Фреймворки 1.1 ASP.NET 1.2 C++ 1.3 ColdFusion Markup Language (CFML) …   Википедия

  • Comparison of web application frameworks — This is a comparison of notable web application frameworks. Contents 1 General 1.1 Perl 1.2 PHP 1.3 Java 1.4 Python …   Wikipedia

  • Scaffold (programming) — Scaffolding is a meta programming method of building database backed software applications. It is a technique supported by some model view controller frameworks, in which the programmer may write a specification that describes how the application …   Wikipedia

  • CodeIgniter — Тип Программный каркас для создания веб приложений Разработчик EllisLab, Inc. Операционная система Кроссплатформенный Последняя версия 2.1.3 (8 октября …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”