60
Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013 Version 1.0

Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

  • Upload
    vanbao

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Grundlagen der

Web-Entwicklung INF3172

Das ZEND-Framework

Thomas Walter

12.12.2013 Version 1.0

Page 2: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

aktuelles

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 2

Page 3: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 3

Page 4: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Frameworks

• Framework: wiederverwertbares

Softwaresystem mit bereits implementierter,

genereller (generischer) Funktionalität

– Spezialisierung führt zu konkreter Anwendung

– Framework setzt Architektur um

– Framework folgt Design Pattern

– Beispiele

• Ruby: Ruby on Rails

• PHP: ZEND Framework, Cake-PHP, Symfony,FLOW3

• Python: Django

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 4

Page 5: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

der Begriff "ZEND"

• Buchstaben einiger PHP-Entwickler:

– www.zend.com

– Andi Gutmans und Zeev Suraski

• ZEND-Engine

– nicht-freie PHP-Engine mit besserer Performance

etc.

• ZEND Studio

– professionelle, kommerzielle IDE für PHP

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 5

Page 6: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 6

Page 7: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 7

Page 8: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

das ZEND-Framework

• erste Version 30.6.2007

– aktuell (Dezember 2013): 2.2.5 und 1.12.3

• siehe http://www.zend.com/de/community/framework

– wichtig: http://framework.zend.com/manual

• sehr flexible Lizenz, auch kommerzieller Einsatz

• MVC direkt abgebildet

• Internationalisierung und Lokalisierung

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 8

Page 9: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 9

Page 10: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 10

Page 11: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Entwicklungsumgebung für das

ZEND Framework

• IDE: Integrierte Entwicklungsumgebung

• ZEND-Studio for Eclipse

– http://www.zend.com/de/products/studio/

– nicht frei

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 11

Page 12: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Version 1 und Version 2

• Unterschiede in der Version 2

– neues Lizenzmodell (BSD)

– noch stärker modularisiert

– neuer ModulManager

– neue Sicherheitsfunktionen (Kryptographie)

– ZF1 wird noch weiter gepflegt

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 12

Page 13: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Installation

• das eigentliche Framework besteht aus

PHP-Sourcen

– herunterladen, entpacken

– Apache mit PHP entsprechend konfigurieren

• in php.ini ist die Direktive

include_path

anzupassen

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 13

Page 14: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 14

Page 15: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 15

Page 16: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Namenskonvention und Struktur

• viele moderne Frameworks verwenden eine

Namenskonvention

– angelehnt an Java-Packages

– Beispiel: PHP-Datei (Klasse) Zend_Currency_Validate

ist Datei Validate.php und liegt im Ordner Zend/Currency

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 16

Page 17: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Laden von Klassen-Dateien

• klassisch-PHP: require_once

• Alternative: Klasse Zend_Loader mit

statischer Methode loadClass()

– lädt Datei/Klasse und prüft, ob in Datei korrekte

Klasse vorhanden ist

– kein doppeltes Einbinden, wenn Klasse schon

vorhanden

– require_once('Zend/Loader.php');

Zend_Loader::loadClass('Zend_Beispielklasse');

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 17

Page 18: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Performance

• allgemein:

Frameworks mindern die Performance, da

deutlicher Overhead

• Optimierung sinnvoll, etwa durch Caching des

PHP-Codes

– Zwischenzeitliches Speichern des compilierten

PHP-Codes

• eAccellerator

• APC

• Zend Platform

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 18

Page 19: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

MVC

• ZEND-Framework setzt konsequent auf MVC:

Model-View-Controller ( Design Patterns)

– empfohlene Verzeichnisstruktur application

/controllers

/models

/views

/scripts

/helpers

/filters

html ( htdocs)

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 19

Page 20: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Rewrite Rule

• mittels einer Rewrite-Rule auf dem Apache werden

alle Requests außer Endungen js/ico/gif/jpg/png/css

an die Datei index.php weitergeleitet:

RewriteRule !\.(js|ico|gif|jpg|png|css)$

index.php

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 20

Page 21: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Anlegen eines Projektes

• das Dienstprogramm zf erzeugt ein neues "leeres"

Projekt

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 21

Page 22: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Verzeichnisbaum eines Projektes zfstart

|-- application

| |-- Bootstrap.php

| |-- configs

| | `-- application.ini

| |-- controllers

| | |-- ErrorController.php

| | `-- IndexController.php

| |-- models

| `-- views

| |-- helpers

| `-- scripts

| |-- error

| | `-- error.phtml

| `-- index

| `-- index.phtml

|-- library

|-- public

| |-- .htaccess

| `-- index.php

`-- tests

|-- application

| `-- bootstrap.php

|-- library

| `-- bootstrap.php

`-- phpunit.xml

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 22

Page 23: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Konfiguration eines Projektes

• im Unterordner application/configs

die Datei application.ini

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 23

Page 24: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 24

Page 25: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

der FrontController

• Aufgabe des FrontControllers

– steuert letztlich das Erscheinungsbild der

Anwendung

– setzt wichtige Konfigurationen

– nimmt alle Anfragen entgegen

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 25

Page 26: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

der FrontController

• ein einfacher FrontController (index.php):

require_once 'Zend/Controller/Front.php';

// Instanz auslesen

$fc = Zend_Controller_Front::getInstance();

// Verzeichznis setzen fuer ActionController

$fc->setControllerDirectory('…wo auch immer…');

// Views unterdruecken

$fc->setParam('noViewRenderer', true);

//Ausnahmenbehandlung

$fc->throwExceptions(true);

// Error Handler ausschalten

$fc->setParam('noErrorHandler', true);

$fc-> dispatch();

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 26

Page 27: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 27

Page 28: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

der ActionController

• Aufgabe des ActionControllers: Übernimmt

requests vom FrontController und erzeugt

Antwort

• Minimalvariante:

require_once('Zend/Controller/Action.php');

class IndexController extends Zend_Controller_Action

{

public function indexAction() {

echo('Grundlagen der Web-Entwicklung:<BR>

ActionController');

} // indexAction

} // class IndexController

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 28

Page 29: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 29

Page 30: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 30

Page 31: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

ein zweiter ActionController

• nun ergänzen wir im gleichen Verzeichnis

einen zweiten ActionController mit dem

Namen BeispielController

• dieser soll zwei Methoden implementieren:

– indexAction

– beispielAction

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 31

Page 32: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 32

Page 33: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

was passiert?

• nun sind schon viele Varianten möglich:

– / IndexController/indexAction

– /Beispiel BeispielController/indexAction

– /Beispiel/beispiel

BeispielController/beispielAction

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 33

Page 34: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 34

Page 35: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Struktur der ActionController

• die Controller können zur Übersichtlichkeit in

verschiedene Verzeichnisse (samt Unterstruktur)

abgelegt werden

(Unterordner controllers)

– Realisierung über assoziatives PHP-Array

– zentrales Key-Value-Paar default

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 35

Page 36: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

die View-Componente

• Nutzung der View steuert FrontController:

– $fc->setParam('noViewRenderer', true);

• (Ersetzung true false)

• erzeugt zunächst nur Fehlermeldung, da kein

View-Template vorhanden ist

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 36

Page 37: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

View-Template

• View-Template: HTML-Code mit PHP

(Endung .phtml)

• Namenskonvention: Im Unterordner

views/scripts Unterordner mit Namen des

Controllers, dort Datei mit Namen der

Methode des Controlles

• Beispiel:

– …/views/scripts/index/index.phtml

ist Template für den Controller indexController

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 37

Page 38: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 38

Page 39: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 39

Page 40: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 40

Page 41: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Vorteil dieses Frameworks

typische Frameworks

• HTML-artige Templates

• eigene Template-

Sprache mit wenigen

Direktiven

ZEND Framework

• HTML-artige Templates

• Template-Sprache ist

reines PHP

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 41

Page 42: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

die Verarbeitungsschritte

• FrontController

– nimmt alle Anfragen entgegen

– zentraler Dispatcher zu den Action-Controllern

– Steuerung

• Anfragen und Antworten sind Requests- und

Response-Objekte

• Templates steuern View, view-Objekt

verwaltet anzuzeigende Inhalte

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 42

Page 43: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Werteübergabe

• Übernahme von Werten aus dem HTTP-

Request

– PHP alleine: Superglobals • $_POST

• $_GET

• $_REQUEST

– ZEND Framework: Request-Objekt im

ActionController

• Objekt Zend_Controller_Request_Http

• Methode getRequest()

– $request = $this->getRequest();

$wert = $request->getPost('name');

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 43

Page 44: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

die Framework-Methoden

Framework-Methode PHP Superglobal

getPost() $_POST

getQuery() $_GET

getServer() $_SERVER

getCookie() $_COOKIE

getEnv() $_ENV()

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 44

Page 45: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

das Model

• Model: frei definierbar

(etwa in eigenen PHP-Klassen)

• im ZEND-Framework: Verzeichnis models

– Übersichtlichkeit des Codes

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 45

Page 46: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Error-Handling

• Fehler-Behandlung im Framework

– im FrontController kann auch der Umgang mit

Fehlern grundlegend gesteuert werden

– Beispiel: HTTP-Fehler 404

• Zugriff auf nicht existierende Controller-Methode Zend_Controller_Action_Exception

• Zugriff auf nicht existierenden Controller Zend_Controller_Dispatcher_Exception

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 46

Page 47: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Konfiguration im FrontController

• wichtiger Parameter im Front-Controller; $fc->throwExceptions(true);

– typisch: true für Testsystem, false für Produktivsystem

• aktivieren des Error-Handlings-PlugIns: $fc->setParam('noErrorHandler', true);

– false aktiviert PlugIn

– bei Fehler: Methode errorAction aus Controller-Klasse

ErrorController

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 47

Page 48: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 48

Page 49: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Datenbankzugriff

• das ZEND-Framework erlaubt ebenfalls

einfachen Datenbankzugriff

• Klasse

Zend_Db

– Datenbanklayer unabhängig vom jeweiligen DBMS

– mögliche Treiber:

• MySQLi, db2, Oracle, MS SQL Server, Postgres, SQLite

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 49

Page 50: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Connect zum DBMS

• statische Methode factory() in Klasse

Zend_Db

• Parameter: Treiber und PHP-Array mit

Optionen:

– host, user, password, dbname, port und weitere

Optionen

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 50

Page 51: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 51

Page 52: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

select-Abfrage

• nach DB-Verbindung übliche Select-Abfrage:

– SQL-Statement definieren

– Durchführung (query)

– ResultSet zeilenweise verarbeiten (fetch)

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 52

Page 53: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 53

Page 54: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 54

Page 55: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Benutzer- und Rechtemanagent

• Das ZEND-Framework bietet Klasse Zend_Acl

(Access Control Lists)

– Aufbau eines (hierarchischen) Rechtesystems

– Methoden wie addRole und allow und isAllowed

• Rechte können vererbt werden

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 55

Page 56: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

eigenes Session-Management

• das ZEND-Framework enthält ein eigenes

Session-Management

– Klasse Zend_Session

• stark ähnlich Session-Management von PHP

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 56

Page 57: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Infrastruktur-Klassen

• zum ZEND-Framework gehören wichtige

Infrastruktur-Klassen

– Performance-Optimierung: Zend_Cache

– Plausibilitäts-Test: Zend_Validate

– Filtern von Daten: Zend_Filter

– Formular-Verarbeitung: Zend_Filter_Input

– Logilfes: Zend_Log

– Konfigurationsverwaltung: Zend_Config

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 57

Page 58: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

Ausblick

• weitere Möglichkeiten des ZEND-Frameworks:

– Web-Services

– RSS-/Atom-Feeds

– pdf-Generierung

– Captcha

– direkte Schnittstelle zu Google-Diensten

– Mail

– und sehr viel mehr…

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 58

Page 59: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

…und nun…

• kennen wir ein modernes, typisches

Framework mit seiner Arbeitsweise als

konkretes Architekturbeispiel kennen gelernt

• weitere, noch komplexere Beispiele zu

Frameworks

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 59

Page 60: Grundlagen der Web-Entwicklungceres.zdv.uni-tuebingen.de/fileadmin/Lehre/20132/webst2/webst2... · Grundlagen der Web-Entwicklung INF3172 Das ZEND-Framework Thomas Walter 12.12.2013

© 2013 Universität

Tübingen

INF3172 - Grundlagen der Web-

Entwicklung, Wintersemester 2013/14 60