von Carsten Lucke, 28.02.2008

Einführung in die Entwicklung und grundlegende Konzepte: Workshop Zend Framework

Aus dem
t3n Magazin Nr. 11

Jetzt kaufen

Wie bereits erwähnt, nimmt der Front-Controller des Zend Frameworks alle eingehenden HTTP-Requests entgegen. Um zu gewährleisten, dass das möglich ist, müssen alle Requests auf die Datei „index.php“ gelenkt werden. Hierzu wird URL-Rewriting verwendet. Sie benötigen also einen Webserver, der eine entsprechende Funktionalität bietet. Für den Apache-Webserver kann folgende mod_rewrite-Regel verwendet werden, um den gewünschten Effekt zu erreichen:

mod_rewrite-Regel für den Webserver

RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index./

Listing 1

Dadurch werden alle Requests auf nicht existente Dateien auf „index.php“ umgelenkt. So können Sie sichergehen, dass der Front-Controller nicht auch Requests auf Bilder, CSS-Files oder Ähnliches anwendet. Falls Sie nicht den Apache einsetzen, sollten Sie in der Dokumentation des Zend Frameworks [5] nachschlagen. Mit hoher Wahrscheinlichkeit finden Sie auch die passende Rewriting-Konfiguration für Ihren Webserver.

Von Zend vorgeschlagene Verzeichnisstruktur für Anwendungen, die auf dem Zend Framework basieren

Von Zend vorgeschlagene Verzeichnisstruktur für Anwendungen, die auf dem Zend Framework basieren

Nachdem die Verzeichnisstruktur steht und das Rewriting konfiguriert ist, kommen wir zur „index.php“. Wie schon angesprochen, werden alle Requests durch diese Datei geroutet. Hier wird der Front-Controller erzeugt, der für das Dispatching des Request verantwortlich ist. Daher bezeichnet man diese Datei auch als Bootstrapping-Datei. Das zugehörige Code-Listing zeigt, dass zuerst das Verzeichnis „library“ per „ini_set()“ zum Include-Pfad hinzugefügt wird. Dann werden die Datei mit der Klasse des Front-Controllers geladen und die statische Methode „run()“ aufgerufen, um die Request-Abarbeitung anzustoßen. Der Methode wird als Parameter das Verzeichnis der Action-Controller übergeben. Jetzt identifiziert der Front-Controller auf Basis der aufgerufenen URL den Action-Controller, der für die Verarbeitung des Request zuständig ist und überlässt diesem die fachliche Abarbeitung.

Bootstrapping der Anwendung in der index.php

<?php
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . '../library');
require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run('../application/controllers'); ?>

Listing 2

Damit das funktioniert, müssen Sie den „IndexController“ zunächst einmal erstellen. Dazu legen Sie im Verzeichnis „applications/controllers“ die Datei „IndexController.php“ an. Deren Inhalt finden Sie im entsprechenden Code-Listing. Die Klasse erbt von „Zend_Controller_Action“, die bereits die Basisfunktionalität für alle Action-Controller implementiert. Die einzige Methode, die erstellt werden muss, ist „indexAction()“. Vorerst reicht hier ein leerer Methodenrumpf.

Seite:  1 2 3 4 5 6 7 8 9

Empfohlene Artikel