PHP Alleskönner

Teil 5: PHP-Frameworks Teil VIII - Zend Framework

Die View finden Sie unter views und dort unter scripts. Für den index-Controller heißt die View index. Standardmäßig wird die Dateiendung .phtml verwendet. Platzhalter sind reiner PHP-Code. Mit Zend_Layout können Sie etwa den Rahmen vom Controller-basierten Inhalt trennen.

Relationen

Um im Zend Framework die Relation zwischen der frameworks- und der licences-Tabelle abzubilden, benötigen Sie nur eine DbTable für die licences-Tabelle. Sie können auch ein Model und einen Modelmapper anlegen, notwendig sind beide nicht. In der licences-Tabelle muss die Relation zur Framework-Tabelle abgetragen sein. Dies geschieht in der Eigenschaft $_referenceMap. Sie enthält alle Relationen als Einträge.Jede Relation besitzt einen Namen (auch Regel/rule genannt). Damit wird die anzuwendende Regel später identifiziert. Die Konfigurationsangaben sind, welche Spalte verknüpft ist (columns) - dies kann auch ein Array mit mehreren Spalten sein. refTableClass verweist auf die DbTable-Klasse für die Framework-Tabelle. refColumns ist ein Wert oder ein Array mit den Spalten in der Tabelle, die die Fremdschlüssel enthalten.

PHP-Frameworks Teil VIII - Zend Framework

© Archiv

Einfach: Die Daten aus dem Model werden korrekt ausgegeben.
<?php
class Default_Model_DbTable_Licence
extends Zend_Db_Table_Abstract
{
protected $_name = 'licences';
protected $_referenceMap = array(
'LicenceFramework' => array(
'columns' => 'id',
'refTableClass' => 'Default_Model_
DbTable_Framework',
'refColumns' => 'licence_id'
)
);
}
?>

Das eigentliche Holen der Werte erfolgt im Frameworkmapper in der Methode fetchAll(). Dort wird die Relation mit der Methode findDependentRowset (Klasse, Regel) angesprochen. Erster Parameter ist die (abstrakte) Klasse, zweiter Wert ist die Regel für die gewünschte Relation.Ausgeführt wird die Methode immer auf einer Reihe des Abfrageergebnisses. Das heißt hier, pro Framework werden die zugeordneten Lizenzen geholt. Da es sich hier um eine 1-zu-1-Beziehung handelt, können Sie direkt das erste Resultat verwenden.

PHP-Frameworks Teil VIII - Zend Framework

© Archiv

Erledigt: Die Frameworks und Lizenzen werden ausgelesen.
public function fetchAll()
{
$resultSet = $this->getDbTable()->
fetchAll();
$entries = array();
foreach ($resultSet as $row) {
$entry = new Default_Model_Frame
work();
$licence_value = $row->findDependent
Rowset('Default_Model_DbTable_Licence', 'LicenceFramework');
$licence_row = $licence_value[0];
$licence_name = "test";
$entry->setFrameworkId($row->id)
->setName($row->name)
->setLicenceId($licence_row->licence_
name)
->setMapper($this);
$entries[] = $entry;
}
return $entries;
}

Der Einfachheit halber übergeben wir den Lizenznamen statt der Lizenz-ID. Hier könnten Sie noch weiter anpassen und beispielsweise die ID mit verwenden. Und auch für eine 1-zu-n-Beziehung sähe das Vorgehen genauso aus, nur, dass Sie nicht den ersten Wert aus dem Ergebnis weitergeben, sondern das gesamte Ergebnis.

Inzwischen ausgereift

Viele Jahre lang war der MVC-Ansatz im Zend Framework eher rudimentärer Natur. Dagegen gab es die flexible Datenbankabfrage und viele andere Elemente aus dem Framework schon sehr lange. Mittlerweile ist aber auch der MVC-Ansatz sehr ausgereift und muss sich nicht hinter spezialisierten Frameworks verstecken. Deswegen lässt sich das Zend Framework sowohl als kleine Beimischung, als auch als vollständige Entwicklungsbasis hervorragend verwenden.

Mehr zum Thema

Cover Internet Magazin 6/2010
Praxis-Knowhow für Web-Profis

Ab dem 14. Mail finden Sie die neue Ausgabe des Internet Magazins mit folgenden Themen am Kiosk: Wordpress als CMS einsetzen: Stabil, ausgereift,…
Inhaltsverzeichnis Internet Magazin 7/2010
Praxis-Knowhow für Web-Profis

Ab dem 14. Mail finden Sie die neue Ausgabe des Internet Magazins mit folgenden Themen am Kiosk: HTML5 & CSS3 schon jetzt: Alle neuen Features ohne…
Mobile Webseiten mit jQuery Mobile
Design für Smartphones

Sie wollen eine mobile Webseite oder App erstellen? jQuery Mobile bietet Funktionen und Optik, die für die mobile Nutzung unverzichtbar sind. Zudem…
Mobile Webseiten mit jQuery Mobile
Design für Smartphones

Sie wollen Ihre mobile Webseite übersichtlich gestalten? Wir zeigen Ihnen, wie Sie mit jQuery Mobile ganz einfach Listen, Buttons und eine…
Mobile Webseiten mit jQuery Mobile
Design für Smartphones

Sie wollen Ihrer mobilen Webseite ein individuelles Aussehen geben oder beim Laden der Seite eine Meldung anzeigen lassen? Wir zeigen Ihnen, wie Sie…