Sahnestückchen

Teil 2: Reihe: PHP - Frameworks - Cake PHP

28.4.2009 von Redaktion pcmagazin und Tobias Hauser

ca. 2:25 Min
Ratgeber
  1. Reihe: PHP - Frameworks - Cake PHP
  2. Teil 2: Reihe: PHP - Frameworks - Cake PHP
  3. Teil 3: Reihe: PHP - Frameworks - Cake PHP
  4. Teil 4: Reihe: PHP - Frameworks - Cake PHP
  5. Teil 5: Reihe: PHP - Frameworks - Cake PHP

Für solche Fälle hat sich ein kleiner Hack eingebürgert. Sie definieren eine eigene Datenquelle, die Sie in app/model/datasources packen () und als eigenen driver aufrufen. Eine Methode, die natürlich auch für echte eigene Datenbankverbindungen dienen kann.

Convention over configuration

Die Konventionen bestimmen bei Cake PHP den gesamten Aufbau von der Datenbank- Tabelle bis hin zur View. Zwar lassen sich viele der Konventionen über die Konfiguration auch ändern, aber seine vollen Möglichkeiten entfaltet Cake PHP erst, wenn man die Konventionen auch befolgt.

Den Anfang machen die Datenbanktabellen und zugehörigen Modelle. Nehmen wir an, Sie wollten die Frameworks aus dieser Framework-Serie in einer Tabelle speichern. Dazu wollen Sie von einer anderen Tabelle alle möglichen Features aufnehmen, die so ein Framework haben kann.

Die Relation zwischen beiden Tabellen ist dabei n zu m, sprich, jedes Framework kann n Features haben, jedes Feature kann bei m Frameworks vorkommen. Zugegeben, für diesen Praxisfall würde es auch reichen, alle Features als Spalten in der Framework-Tabelle vorzuhalten, aber hier dient es auch als Beispiel für die Abbildung von Relationen.

PHP - Frameworks Teil 1 - Cake PHP
Backstube: Die Homepage ist Anlaufstelle des CakePHP-Projekts.
© Archiv

Die Konvention sieht in Cake nun so aus: Das Model zur Tabelle ist im Singular gehalten und beginnt mit einem Großbuchstaben, sprich Framework und Feature. Die entsprechenden Tabellen sind Plural und in Kleinbuchstaben, also frameworks und features. Bei zusammengesetzten Namen wird im Model mit CamelCase (Großbuchstabe in der Wortmitte) gearbeitet, in der Tabelle mit Unterstrichen.

Fremdschlüssel bestehen aus dem Namen des entsprechenden Models im Singular mit angehängtem _id. Wenn wir also ein Model Licence für die Lizenz haben, ist in der frameworks-Tabelle ein Feld licence_id vorhanden.

Tabellen für n-zu-m-Beziehungen bestehen aus den Pluralnamen der zugrunde liegenden Tabellen, sprich features_frameworks. Die Reihenfolge der Tabellennamen ist alphabetisch.

CREATE TABLE IF NOT EXISTS 'features'
( 'id' int(11) NOT NULL, 'name' varchar(255) NOT NULL, PRIMARY KEY ('id'))
CREATE TABLE IF NOT EXISTS
'licences' ( 'id' int(11) NOT NULL, 'name' varchar(255) NOT NULL, PRIMARY KEY ('id'))
CREATE TABLE IF
NOT EXISTS 'features_frameworks'(
'feature_id' int(11) NOT NULL, 'framework_id' int(11) NOT NULL)
CREATE TABLE IF NOT EXISTS
'frameworks' ( 'id' int(11) NOT NULL, 'name' varchar(255) NOT NULL, 'licence_id' int(11) NOT NULL, PRIMARY KEY ('id'))

Nun geht es daran, aus der einfachen Tabellenstruktur eine Anwendung zu machen. Für den Einstieg können Sie hierzu auch das Konsolenprogramm Bake verwenden (). Es wird im Verzeichnis cake/console mitgeliefert und erlaubt es, beispielsweise automatisch Model-Dateien anzulegen.

Aufbau

Der erste Arbeitsschritt nach dem Anlegen der Datenbank ist meist der Controller. In unserem Fall soll der Controller die Frameworks auslesen. Die entsprechende Klasse heißt also gemäß der Cake-Konvention FrameworksController. Er landet in app/controllers/frameworks_controller.php.

Der übliche Aufbau ist hier für ein Model auch einen Controller einzusetzen, dies ist aber auch änderbar. Gemeinsamen Code für mehrere Controller legen Sie am besten in einer Komponente ab.

Der folgende Code zeigt einen sehr einfachen Controller. Er greift über die Namenskonvention auf das Framework-Model zu und holt über die Methode find() alle Einträge. Das Model selbst muss es noch nicht geben. Ist es nicht vorhanden, ergänzt Cake PHP automatisch ein Model, das von der Basisklasse AppModel erbt:

<?php
class FrameworksController extends
AppController {
function index() {
$frameworks = $this->Framework->find('all');
$this->set('frameworks',
$frameworks);
}
}
?>

Mehr lesen

Chronologische Liste und Netflix-Links

Marvel-Filme- und -Serien: Das ist die richtige Reihenfolge

Neuerscheinungen in der Übersicht

Netflix: Neue Filme und Serien

Vorschau auf Film- und Serien-Highlights

Amazon Prime Video: Neuheiten

Weiter zur Startseite  

Mehr zum Thema

internet, webdesign, adobe,  Illustrator, CS6

Webdesign

Webdesign in Adobe Illustrator CS6

Adobe Illustrator wird im Webdesign immer beliebter. Wie Sie das Tool richtig einsetzen, erfahren Sie hier.

Facebook stellte die neue Suche

Facebook

Facebooks Social Graph Search

Was sind die Implikationen für Unternehmen und Endanwender bei Facebooks neuer Suche Graph Search?

Der BGH erklärt das Internet zur Lebensgrundlage.

Online-Recht

Darauf müssen Sie bei den AGB achten

Allgemeine Geschäftsbedingungen liest sich niemand gerne durch. Sie sind jedoch notwendig und äußerst sinnvoll. Worauf sie achten sollten.

Online-Urheberrecht: Unser Ratgeber bietet Tipps für das Cloud-Recht.

Online-Recht in der Cloud

Wie sieht das Urheberrecht in der Wolke aus?

Dateien werden immer häufiger in der Cloud bereitgestellt. Rechtlich ist das jedoch durchaus problematisch. Wir klären über das Urheberrecht in der…

Logistik im E-Commerce: Prozesse rund um die Logistik.

E-Commerce-Logistik

Logistik im E-Commerce

Für den Erfolg eines Online-Shops sind zahlreiche Faktoren verantwortlich. Neben Produktvielfalt und Darstellung der Waren gehört auch die Logistik.