Entwicklung & Design

Rapid Prototyping Framework: CakePHP

Seite 2 / 5

MVC

Grundsätzlich wird eine CakePHP-Applikation per Konvention über das Entwurfsmuster MVC (Model-View-Controller) strukturiert. Daraus ergibt sich eine saubere Trennung zwischen Daten, Ablaufsteuerung und Präsentation. Das Model ermöglicht den einfachen Zugriff auf die Datenbank sowie die Definition von Validierungen und Assoziationen. Reguläre Ausdrücke validieren die Daten, wobei es für den Anfänger auch ein paar vordefinierte Konstanten wie VALID_EMAIL, VALID_NUMBER oder VALID_NOT_EMPTY gibt. Komplexere Validierungen mit Abhängigkeiten sind problemlos möglich, ohne dass die Model-Klasse dabei an Übersicht verliert.

PHP
class User extends AppModel {
	var $name = 'User';
	var $validate = array('email'=>VALID_EMAIL);
	function beforeSave() {
		if (isset($this->data['password']) {
			$this->data['password'] = md5($this->data['password']);
		}
	}
}

Listing 1

Der Controller nimmt das Request entgegen und delegiert meist ausschließlich innerhalb einer Methode den Ablauf von der Model-Ebene bis zum Template. Die Applikation baut automatisch eine URL-Struktur anhand der vorhandenen Controller auf (z. B. /users/login/), sofern „mod_rewrite“ im Apache aktiviert ist.

Die Views (Templates) bestehen aus reinem HTML und PHP. Man benutzt lediglich Schleifen und Verzweigungen, um die dynamischen Inhalte in den HTML-Code einzufügen. Dabei wird man tatkräftig von den in CakePHP bereits vorhandenen HTML-, Form- bzw. Ajax-Helpern unterstützt. Ein von Helpern generiertes Formular ist so im Handumdrehen erstellt, wird sofort validiert und in der Datenbank gespeichert.

In die wichtigsten Methoden, die von Model (find/read, save) und Controller (render) mitgebracht werden, kann man über Callbacks wie „beforeSave()“ eingreifen. In Listing 1 wird bei jedem Speichern eines Users geprüft, ob das Passwort gespeichert werden soll. Wenn ja, wird es vorher über einen MD5-Hash kodiert. Applikationsweite Modifikationen der Model- und Controller-Klassen können im AppController respektive AppModel eingefügt werden. So spart man sich Wiederholungen in allen oder zumindest in vielen Controllern/Models.

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Ein Kommentar
Olav Schettler

In einem aktuellen Projekt habe ich festgestellt, dass sich CakePHP auch hervorragend als Frontend für TYPO3 eignet. Mit dieser Integration gelingt es uns, produktive Entwicklung von individuellen und innovativen Features im Frontend mit einem mächtigen Redaktionssystem zu kombinieren, ohne das Rad in die eine oder andere Richtung neu erfinden zu müssen. Die Software für diese Integration ist Open Source und kann unter schettler.net/fossil/t3c heruntergeladen werden.

Antworten

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung