PHP Alleskönner

Teil 3: PHP-Frameworks Teil VIII - Zend Framework

class Bootstrap extends Zend_
Application_Bootstrap_Bootstrap
{
protected function _initAutoload()
{
$autoloader = new Zend_Application_
Module_Autoloader(array(
'namespace' => 'Default_',
'basePath' => dirname(__FILE__),
));
return $autoloader;
}
}

Damit ist sichergestellt, dass das Model, das wir jetzt erstellen, auch automatisch geladen wird. Das Model selbst besteht aus mehreren Klassen: Dem eigentlichen Model, das einen Datensatz als Objekt abbildet und den Zugriff auf die Werte über Eigenschaften regelt, einem Modelmapper, der das Speichern und Suchen in der Datenbank steuert und einer auf Zend_Db_Table_Abstract basierenden Klasse im Unterverzeichnis models/DbTable, die die Tabelle verknüpft.

Die Datei für das Model heißt Framework.php und landet im models-Verzeichnis, der Mapper heißt Frameworkmapper.php und landet im selben Verzeichnis. In models/DbTable legen Sie dann noch die DbTable-Klasse mit dem Namen Framework.php an.

Wir zäumen das Pferd hier von hinten auf und starten mit der DbTable-Klasse:

<?php
class Default_Model_DbTable_Framework
extends Zend_Db_Table_Abstract
{
protected $_name = 'frameworks';
}
?>

Hier wird nur der Name der Tabelle abgelegt. Wenn die Tabelle genauso heißt wie die Klasse, könnte diese Angabe auch weggelassen werden.

Auch den Primärschlüssel können Sie hier explizit mit der Eigenschaft $_primary angeben. Alternativ erfolgt eine automatische Erkennung.

Die Information zum Tabellennamen verwendet dann der Mapper in seinen Methoden setDbTable() und getDbTable(), um auf die Tabelle zuzugreifen:

<?php
class Default_Model_
FrameworkMapper
{
protected $_dbTable;
public function setDbTable
($dbTable)
{
if (is_string($dbTable)) {
$dbTable = new $dbTable();
}
if (!$dbTable instanceof
Zend_Db_Table_Abstract) {
throw new Exception
('Invalid table data gateway provided');
}
$this->_dbTable = $dbTable;
return $this;
}
public function getDbTable()
{
if (null === $this->_dbTable) {
$this->setDbTable('Default_Model_
DbTable_Framework');
}
return $this->_dbTable;
}
//Funktionen zum Speichern und Laden
}

Wenn der Tabellenzugriff geregelt ist, erhält der Mapper standardmäßig drei Funktionen: save() zum Speichern eines neuen Frameworks, find(Id) zum Auslesen eines bestimmten Frameworks per ID und fetchAll(), um alle Frameworks auszulesen. Hier sehen wir uns fetchAll() näher an:

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…