Teil 4: Serie: PHP-Frameworks Teil 4 - Kohana
- Serie: PHP-Frameworks Teil 4 - Kohana
- Teil 2: Serie: PHP-Frameworks Teil 4 - Kohana
- Teil 3: Serie: PHP-Frameworks Teil 4 - Kohana
- Teil 4: Serie: PHP-Frameworks Teil 4 - Kohana
- Teil 5: Serie: PHP-Frameworks Teil 4 - Kohana
Auch hier setzt Kohana auf Convention over Configuration. Die Beziehungen zwischen Datenbank und PHP-Klassen beruhen auf Konventionen. Richtig angewendet, kann das Framework die Zuordnung zwischen Datenbanktabelle und PHP-Klasse automatisch vornehmen. Dies funktioniert in beide Richtungen, also fÃ...
Auch hier setzt Kohana auf Convention over Configuration. Die Beziehungen zwischen Datenbank und PHP-Klassen beruhen auf Konventionen. Richtig angewendet, kann das Framework die Zuordnung zwischen Datenbanktabelle und PHP-Klasse automatisch vornehmen.
Dies funktioniert in beide Richtungen, also für das Lesen und das Schreiben von Daten. Die Regeln, die diesen Konventionen zugrunde liegen, sind einfach und orientieren sich an den Konventionen des Ruby-on-Rails-Frameworks. Die Regeln lassen sich kurz zusammenfassen:
• Tabellennamen werden immer in Mehrzahl (zum Beispiel users) geschrieben. • Klassennamen sind immer in Einzahl (User). • Jede Tabelle sollte eine Autoincrement-Spalte mit dem Namen id besitzen. • Fremdschlüssel werden mit dem Namen der Zieltabelle mit angehängtem Zusatz _id versehen (user_id).
Mehr benötigt das Framework nicht, um Objektdaten in den entsprechenden Datenbanktabellen abzulegen. Das folgende Beispiel zeigt eine einfache ORM-Klasse einer Kohana-Anwendung, die vom Framework anhand ihres Namens zu der Datenbanktabelle user zugeordnet wird.
<?php
class User_Model extends ORM {
}
?>
Auch hier muss wieder eine Namenskonvention eingehalten werden. In diesem Fall wird an den Namen der Klasse ein _Model angehängt. Dies und die Vererbung der Basisklasse ORM stellen die Funktionen sicher. Eine Besonderheit ist, dass innerhalb der Klasse keine Properties definiert werden. Diese werden vom Framework automatisch aus der Datenbanktabelle gemappt.
Durch die ähnliche Vorgehensweise wie bei Rails ergeben sich auch die gleichen Nachteile aus dieser Art der Mapping-Definition. Datenbank-Administratoren rümpfen bei den entstehenden Strukturen und Benennungen oftmals die Nase (mehrzahlige Tabellennamen) und der Zugriff auf existierende Datenbanken, die sich nicht an die Konventionen halten, wird zudem eine Qual.
Verknüpfungen
Weder Klassen beziehungsweise Objekte, noch Datenbanktabellen stehen normalerweise für sich allein. Verbindungen zu anderen Tabellen sind die Regel. Aus diesem Grund lassen sie sich auch auf Seite der Model-Klassen definieren. Kohana stellt hierzu verschiedene Verbindungsarten zur Verfügung, die je nach Aufgabe zum Einsatz kommen.
• One-to-one: Auch wenn es sich auf den ersten Blick komisch anhört, sind solche Beziehungen durchaus häufig anzutreffen. Sie helfen dabei, eine Datenbank sauber zu strukturieren. Zu einem Eintrag in einer Tabelle gehört exakt ein Eintrag in einer anderen Tabelle. • One-to-many oder Many-to-one: Diese Art der Datenbeziehung ist die wahrscheinlich am häufigsten verwendete. Einem Eintrag in einer Tabelle sind ein oder mehrere Einträge einer anderen Tabelle zugeordnet. • Many-to-many: Diese Art der Beziehung ist diejenige, die am meisten Probleme verursacht. Viele-zu-viele-Verbindungen sind auf Objektebene ganz normal und kommen häufig zum Einsatz. In Datenbanken ist diese Beziehung nur über eine zusätzliche Tabelle (Join-Tabelle oder Kreuzreferenztabelle genannt) realisierbar. Einsatzbereich hierfür finden sich viele. So können in einem Shop-System zu einem Kunden mehrere Adressen gehören. Unter einer Adresse können aber ebenso mehrere Kunden geführt sein. • Das folgende Listing zeigt den Einsatz einer One-to-many-Beziehung zwischen den zwei Klassen Post und Comment, die von Kohana automatisch als Fremdschlüsselbeziehung in der Datenbank abgebildet wird.