Sahnestückchen

Teil 2: 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

© Archiv

Backstube: Die Homepage ist Anlaufstelle des CakePHP-Projekts.

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 zum Thema

HTML5: Quick Reference Guide
Ratgeber: "HTML5"

Die wichtigsten Tags auf einen Blick: In unserem praktischen Arbeitsblatt finden Sie einen wertvollen Begleiter für die Umstellung Ihrer Webprojekte…
internet, webdesign, google, content, ranking, seo, suchmaschine
Ratgeber: Urheberrecht

Einzigartige Inhalte bieten Lesern Mehrwert und sind ein wichtiges Qualitätsmerkmal. Ärgerlich, wenn sich jemand durch Kopieren an fremden Ergebnissen…
Die besten HTML5-Tipps
Neue Tipps & Tricks für blitz.io

Wer die Leistung einer Applikation ermitteln möchte, braucht keine Skripte zu schreiben, sondern kann einen der zahlreichen Online-Dienste einspannen.…
image.jpg
Ratgeber: Webentwicklung

Die clientseitige Javascript-Entwicklung bietet fast keine Entwicklungsumgebungen und auch keine vernünftigen Werkzeuge zur Fehlersuche. Eine der…
internet, webdesign, meteor, webapplikationen
Ratgeber

Mit Meteor sollen Entwickler in kurzer Zeit Umgebungen für Webapplikationen erstellen können, ohne sich um lästige Details kümmern zu müssen. Wir…