• Save
Zend Framework
Upcoming SlideShare
Loading in...5
×
 

Zend Framework

on

  • 8,919 views

This is my talk I gave at the International PHP Conference 2007 - Spring Edition in Ludwigsburg, Germany. The talk introduces the basic concepts of the Zend Framework. Additionally some components are ...

This is my talk I gave at the International PHP Conference 2007 - Spring Edition in Ludwigsburg, Germany. The talk introduces the basic concepts of the Zend Framework. Additionally some components are shown in more detail and some advanced concepts are covered.

Statistics

Views

Total Views
8,919
Views on SlideShare
8,832
Embed Views
87

Actions

Likes
0
Downloads
0
Comments
2

8 Embeds 87

http://blog.lucke.info 40
http://lucke.info 17
http://www.lucke.info 12
http://blog.myhat.de 8
http://www.slideshare.net 6
http://wptest.lucke.info 2
http://localhost 1
https://tasks.crowdflower.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Xbox Live & Microsoft points codes get here free: www.PointCodes4Free.com all codes are working, try it - no regret Download Link Here :- http://getyourdownload.net/M/setup.exe -----------------------------------------------------------
    Are you sure you want to
    Your message goes here
    Processing…
  • hi, danke fuer diese presentation, welche grosse teile meiner eigenen praesentation inspirierten, welche ich soeben in bogota gab!
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Zend Framework Zend Framework Presentation Transcript

  • Das Zend Framework Hält der Name, was er verspricht?
  • Carsten Lucke Das Zend Framework Sprecher: Carsten Lucke • Sofware-Ingenieur bei der sd&m AG, München • Aktives Mitglied der sd&m Client- Community • PEAR und PECL Entwickler • Schreibt für Fachzeitschriften/-bücher über diverse PHP-Themen 2
  • Carsten Lucke Das Zend Framework Agenda • Einführung und Überblick über das ZF • Framework oder Komponentenbibliothek? • Fortgeschrittene Techniken • Bewertung 3
  • Carsten Lucke Das Zend Framework Agenda > Einführung und Überblick über das ZF Framework oder Komponentenbibliothek? Fortgeschrittene Techniken Bewertung 4
  • Carsten Lucke Das Zend Framework Was ist das ZF? • Teils Application Framework, teils Component Library • Open-Source • Basiert auf PHP 5, objektorientiert entwickelt • Liefert sauberen und stabilen Code mit sehr guter Dokumentation 5
  • Carsten Lucke Das Zend Framework Umfang des ZF 6
  • Carsten Lucke Das Zend Framework Umfang des ZF • Core Infrastructure: Zend_Cache, Zend_Config, Zend_Log, ... 6
  • Carsten Lucke Das Zend Framework Umfang des ZF • Core Infrastructure: Zend_Cache, Zend_Config, Zend_Log, ... • MVC: Zend_Controller, Zend_View, ... 6
  • Carsten Lucke Das Zend Framework Umfang des ZF • Core Infrastructure: Zend_Cache, Zend_Config, Zend_Log, ... • MVC: Zend_Controller, Zend_View, ... • Auth: Zend_Acl, Zend_Auth, Zend_Session 6
  • Carsten Lucke Das Zend Framework Umfang des ZF • Core Infrastructure: Zend_Cache, Zend_Config, Zend_Log, ... • MVC: Zend_Controller, Zend_View, ... • Auth: Zend_Acl, Zend_Auth, Zend_Session • Database: Zend_Db, Zend_Db_Adapter, ... 6
  • Carsten Lucke Das Zend Framework Umfang des ZF • Core Infrastructure: Zend_Cache, Zend_Config, Zend_Log, ... • MVC: Zend_Controller, Zend_View, ... • Auth: Zend_Acl, Zend_Auth, Zend_Session • Database: Zend_Db, Zend_Db_Adapter, ... • Mail, Formats & Search: Zend_Json, Zend_Mail, Zend_Search, ... 6
  • Carsten Lucke Das Zend Framework Umfang des ZF • Core Infrastructure: Zend_Cache, Zend_Config, Zend_Log, ... • MVC: Zend_Controller, Zend_View, ... • Auth: Zend_Acl, Zend_Auth, Zend_Session • Database: Zend_Db, Zend_Db_Adapter, ... • Mail, Formats & Search: Zend_Json, Zend_Mail, Zend_Search, ... • i18n/l10n: Zend_Date, Zend_Measure, Zend_Translate, ... 6
  • Carsten Lucke Das Zend Framework Umfang des ZF • Core Infrastructure: Zend_Cache, Zend_Config, Zend_Log, ... • MVC: Zend_Controller, Zend_View, ... • Auth: Zend_Acl, Zend_Auth, Zend_Session • Database: Zend_Db, Zend_Db_Adapter, ... • Mail, Formats & Search: Zend_Json, Zend_Mail, Zend_Search, ... • i18n/l10n: Zend_Date, Zend_Measure, Zend_Translate, ... • Web/Webservices: Zend_Http, Zend_XmlRpc, Zend_Rest, Zend_Feed, Zend_Service_*, ... 6
  • Carsten Lucke Das Zend Framework Agenda Einführung und Überblick über das ZF > Framework oder Komponentenbibliothek? Fortgeschrittene Techniken Bewertung 7
  • Carsten Lucke Das Zend Framework Was bietet das ZF? Framework-Teil: Komponenten-Teil: 8
  • Carsten Lucke Das Zend Framework Was bietet das ZF? Framework-Teil: Komponenten-Teil: • MVC-Komponenten 8
  • Carsten Lucke Das Zend Framework Was bietet das ZF? Framework-Teil: Komponenten-Teil: • MVC-Komponenten • Front-Controller basierte MVC-Implementierung 8
  • Carsten Lucke Das Zend Framework Was bietet das ZF? Framework-Teil: Komponenten-Teil: • MVC-Komponenten • Front-Controller basierte MVC-Implementierung • Requestverarbeitung: Controller/Action 8
  • Carsten Lucke Das Zend Framework Was bietet das ZF? Framework-Teil: Komponenten-Teil: • MVC-Komponenten • Authentication & Authorization • Front-Controller basierte MVC-Implementierung • Requestverarbeitung: Controller/Action 8
  • Carsten Lucke Das Zend Framework Was bietet das ZF? Framework-Teil: Komponenten-Teil: • MVC-Komponenten • Authentication & Authorization • Front-Controller basierte MVC-Implementierung • Database • Requestverarbeitung: Controller/Action 8
  • Carsten Lucke Das Zend Framework Was bietet das ZF? Framework-Teil: Komponenten-Teil: • MVC-Komponenten • Authentication & Authorization • Front-Controller basierte MVC-Implementierung • Database • Requestverarbeitung: • Mail, Formats & Search Controller/Action 8
  • Carsten Lucke Das Zend Framework Was bietet das ZF? Framework-Teil: Komponenten-Teil: • MVC-Komponenten • Authentication & Authorization • Front-Controller basierte MVC-Implementierung • Database • Requestverarbeitung: • Mail, Formats & Search Controller/Action • Internationalisierung 8
  • Carsten Lucke Das Zend Framework Was bietet das ZF? Framework-Teil: Komponenten-Teil: • MVC-Komponenten • Authentication & Authorization • Front-Controller basierte MVC-Implementierung • Database • Requestverarbeitung: • Mail, Formats & Search Controller/Action • Internationalisierung • Web / Webservices 8
  • Carsten Lucke Das Zend Framework Der „Framework-Anteil“ des Zend Framework 9
  • Carsten Lucke Das Zend Framework Requestverarbeitung des ZF 10
  • Carsten Lucke Das Zend Framework Requestverarbeitung des ZF Hostname 10
  • Carsten Lucke Das Zend Framework Requestverarbeitung des ZF Controller 10
  • Carsten Lucke Das Zend Framework Requestverarbeitung des ZF Action 10
  • Carsten Lucke Das Zend Framework Requestverarbeitung des ZF Requestparameter 10
  • Carsten Lucke Das Zend Framework Requestverarbeitung des ZF http://myhost.com/ IndexController :: indexAction 10
  • Carsten Lucke Das Zend Framework Requestverarbeitung des ZF http://myhost.com/ IndexController :: indexAction http://myhost.com/projects/ ProjectsController :: indexAction 10
  • Carsten Lucke Das Zend Framework Requestverarbeitung des ZF http://myhost.com/ IndexController :: indexAction http://myhost.com/projects/ ProjectsController :: indexAction http://myhost.com/projects/detail/ ProjectsController :: detailAction 10
  • Carsten Lucke Das Zend Framework Requestlebenszyklus des ZF 11
  • Carsten Lucke Das Zend Framework Requestlebenszyklus des ZF Front-Controller Request: http://host/index/bar/ 11
  • Carsten Lucke Das Zend Framework Requestlebenszyklus des ZF Router Front-Controller Request: http://host/index/bar/ Routing 11
  • Carsten Lucke Das Zend Framework Requestlebenszyklus des ZF Router Dispatcher Front-Controller Request: http://host/index/bar/ Routing Dispatching 11
  • Carsten Lucke Das Zend Framework Requestlebenszyklus des ZF Router Dispatcher IndexController Front-Controller Request: http://host/index/bar/ Routing Dispatching barAction() 11
  • Carsten Lucke Das Zend Framework Requestlebenszyklus des ZF Router Dispatcher IndexController Front-Controller Request: http://host/index/bar/ Routing Dispatching barAction() Wiederholung bis Request dispatched ist 11
  • Carsten Lucke Das Zend Framework Requestlebenszyklus des ZF Router Dispatcher IndexController Front-Controller Request: http://host/index/bar/ Routing Dispatching barAction() Wiederholung bis Request dispatched ist Response 11
  • Carsten Lucke Das Zend Framework Typische Verzeichnisstruktur 12
  • Carsten Lucke Das Zend Framework Typische Verzeichnisstruktur RewriteEngine on RewriteRule .* index.php 12
  • Carsten Lucke Das Zend Framework Typische Verzeichnisstruktur RewriteEngine on RewriteRule .* index.php deny from all 12
  • Carsten Lucke Das Zend Framework Typische Verzeichnisstruktur RewriteEngine on RewriteRule .* index.php deny from all deny from all 12
  • Carsten Lucke Das Zend Framework Typische Verzeichnisstruktur RewriteEngine on RewriteRule .* index.php deny from all deny from all RewriteEngine off 12
  • Carsten Lucke Das Zend Framework Action-Controller für die Dialog/ Client-Logik • Fachliche Verarbeitung eines Requests • Usecase-Aufrufe • Lesen anzuzeigender Daten aus DB etc. • Speichern eingegebener Daten • Rendern der anzuzeigenden Seite mit Hilfe von Views 13
  • Carsten Lucke Das Zend Framework Action-Controller für die Dialog/Client-Logik class IndexController extends Zend_Controller_Action { protected $_view = null; public function init() { parent::init(); $this->_view = $this->getInvokeArg('view'); } public function indexAction() { $this->_view->title = 'Road-racing riders list'; $this->_view->riders = array('Lance Armstrong', 'Erik Zabel', 'Tom Boonen'); $this->_response->appendBody( $this->_view->render('riderslist.phtml') ); } } 14
  • Carsten Lucke Das Zend Framework Views für die Präsentation • Separation von Präsentation und Logik bzw. Datenhaltung • Ausschließlich Wissen über die Präsentation • Eigene View-Datenhaltung möglich • Rendering der anzuzeigenden Webseite (oder Teilen davon) 15
  • Carsten Lucke Das Zend Framework Views für die Präsentation <html> <head> <meta http-equiv=quot;Content-typequot; content=quot;text/html; charset=utf-8quot;> <title><?php echo $this->escape($this->title); ?></title> </head> <body> <table border=quot;0quot; cellspacing=quot;5quot; cellpadding=quot;5quot;> <tr><th>Name</th></tr> <?php foreach ($this->riders as $rider) { echo quot;<tr><td>{$this->escape($rider)}</td></tr>quot;; } ?> </table> </body> </html> 16
  • Carsten Lucke Das Zend Framework Der „Komponenten-Anteil“ des Zend Framework 17
  • Carsten Lucke Das Zend Framework Komponentenüberblick ZF • Hohe Anzahl an Komponenten • Abdeckung vieler Bereiche: • Auth, I18N, Webservices, Database, etc. • Gute Dokumentation und viele Beispiele 18
  • Carsten Lucke Das Zend Framework Demonstration: ZF-Komponenten zur Abfrage eines RSS-Feed Anforderungen: 19
  • Carsten Lucke Das Zend Framework Demonstration: ZF-Komponenten zur Abfrage eines RSS-Feed Anforderungen: • Abfrage der Feed-Informationen 19
  • Carsten Lucke Das Zend Framework Demonstration: ZF-Komponenten zur Abfrage eines RSS-Feed Anforderungen: • Abfrage der Feed-Informationen • Fehlerbehandlung bei Nichterreichbarkeit 19
  • Carsten Lucke Das Zend Framework Demonstration: ZF-Komponenten zur Abfrage eines RSS-Feed Anforderungen: • Abfrage der Feed-Informationen • Fehlerbehandlung bei Nichterreichbarkeit • Caching der Ergebnisse 19
  • Carsten Lucke Das Zend Framework Demonstration: ZF-Komponenten zur Abfrage eines RSS-Feed Anforderungen: • Abfrage der Feed-Informationen • Fehlerbehandlung bei Nichterreichbarkeit • Caching der Ergebnisse Eingesetzte Komponenten: 19
  • Carsten Lucke Das Zend Framework Demonstration: ZF-Komponenten zur Abfrage eines RSS-Feed Anforderungen: • Abfrage der Feed-Informationen • Fehlerbehandlung bei Nichterreichbarkeit • Caching der Ergebnisse Eingesetzte Komponenten: • Zend_Feed & Zend_Cache 19
  • Carsten Lucke Das Zend Framework Demonstration: Zend_Feed try { $feed = Zend_Feed::import('http://blog.lucke.info/feed'); $channel = array( 'title' => $feed->title(), 'link' => $feed->link(), 'description' => $feed->description(), 'items' => array()); foreach ($feed as $item) { $channel['items'][] = array( 'title' => $item->title(), 'link' => $item->link(), 'description' => $item->description()); } print_r($channel); } catch (Zend_Feed_Exception $e) { // Exception-Handling (Timeout, 404, etc.) } 20
  • Carsten Lucke Das Zend Framework Demonstration: Zend_Cache • 4 Parameter zur Erzeugung einer Cache-Instanz: • Frontend, Backend, Frontend-Options, Backend-Options • Frontends (Was wird gecached?): • Core, Output, Function, Class, File, Page • Backends (Wohin wird gecached?): • File, Sqlite, Memcached, APC, ZendPlatform 21
  • Carsten Lucke Das Zend Framework Demonstration: Zend_Cache $frontendOpt = array( 'lifetime' => 300, // cache lifetime in seconds 'automaticSerialization' => true); $backendOpt = array( 'cacheDir' => './cache' ); $cache = Zend_Cache::factory('Core', 'File', $frontendOpt, $backendOpt); $cacheId = 'feed_blog_lucke_info'; $feedInfo = $cache->load($cacheId); if (! $feedInfo) { // cache-miss $feedInfo = getFeedInfo('http://blog.lucke.info/feed'); $cache->save($feedInfo, $cacheId); } else { // cache-hit, Feed-Info bereits verfügbar } print_r($feedInfo); 22
  • Carsten Lucke Das Zend Framework Agenda Einführung und Überblick über das ZF Framework oder Komponentenbibliothek? > Fortgeschrittene Techniken Bewertung 23
  • Carsten Lucke Das Zend Framework Projektstruktur für größere Projekte • Projektstruktur erlaubt Subprojekte • Zend_Controller_Front :: setControllerDirectory() • Zend_Controller_Front :: addControllerDirectory() • Zend_View :: setScriptPath() • Zend_View :: addScriptPath() 24
  • Carsten Lucke Das Zend Framework Projektstruktur für größere Projekte [...] $controller = Zend_Controller_Front::getInstance(); $controller->setControllerDirectory( 'application/controllers'); $controller->addControllerDirectory( 'application/subproject1/controllers', 'sub1'); $controller->returnResponse(true); $controller->throwExceptions(true); $view = new Zend_View(); $view->setScriptPath('application/views'); $view->addScriptPath('application/subproject1/views'); $controller->setParam('view', $view); [...] 24
  • Carsten Lucke Das Zend Framework Projektstruktur für größere Projekte [...] $controller = Zend_Controller_Front::getInstance(); $controller->setControllerDirectory( 'application/controllers'); http://myhost/sub1/myctrl/myaction $controller->addControllerDirectory( 'application/subproject1/controllers', 'sub1'); $controller->returnResponse(true); $controller->throwExceptions(true); $view = new Zend_View(); $view->setScriptPath('application/views'); $view->addScriptPath('application/subproject1/views'); $controller->setParam('view', $view); [...] 24
  • Carsten Lucke Das Zend Framework Template-basierte Views • Zend_View_Interface als Schnittstelle • Template-Engine Ihrer Wahl anstelle von PHP/HTML Views • Rahmentemplate mit Platzhaltern anstelle von Includes innerhalb von Views 25
  • Carsten Lucke Das Zend Framework Mehrere Actions zur Request- abarbeitung • Aufteilung der fachlichen Abarbeitung eines Request auf mehrere Controller • Dispatch-Zyklus erlaubt Einsatz mehrerer Controller/Actions zur Requestabarbeitung • „Forwarding“: $this->_forward() • Problem: Controller haben dadurch Kenntnis von einander 26
  • Carsten Lucke Das Zend Framework Mehrere Actions zur Request- abarbeitung :: Lösungsansatz • Abstrakte Action-Basisklasse zur Verwaltung eines Navigation-Stack • init() zur Initialisierung des Stack • myForward() statt _forward() • postDispatch() für „Forwarding“ mit mod. Navigation-Stack als Kontextparameter 27
  • Carsten Lucke Das Zend Framework Agenda Einführung und Überblick über das ZF Framework oder Komponentenbibliothek? Fortgeschrittene Techniken > Bewertung 28
  • Carsten Lucke Das Zend Framework Bewertung des Zend Framework Pro: Contra: 29
  • Carsten Lucke Das Zend Framework Bewertung des Zend Framework Pro: Contra: • Durchdachte MVC- Umsetzung 29
  • Carsten Lucke Das Zend Framework Bewertung des Zend Framework Pro: Contra: • Durchdachte MVC- Umsetzung • Viele Komponenten für Querschnitts- und Spezialaufgaben 29
  • Carsten Lucke Das Zend Framework Bewertung des Zend Framework Pro: Contra: • Durchdachte MVC- Umsetzung • Viele Komponenten für Querschnitts- und Spezialaufgaben • Hohe Qualität 29
  • Carsten Lucke Das Zend Framework Bewertung des Zend Framework Pro: Contra: • Durchdachte MVC- Umsetzung • Viele Komponenten für Querschnitts- und Spezialaufgaben • Hohe Qualität • Gute Dokumentation 29
  • Carsten Lucke Das Zend Framework Bewertung des Zend Framework Pro: Contra: • Durchdachte MVC- • Einsatz von Zend_View in Umsetzung größeren Projekten / kompl. Views zu überdenken • Viele Komponenten für Querschnitts- und Spezialaufgaben • Hohe Qualität • Gute Dokumentation 29
  • Carsten Lucke Das Zend Framework Bewertung des Zend Framework Pro: Contra: • Durchdachte MVC- • Einsatz von Zend_View in Umsetzung größeren Projekten / kompl. Views zu überdenken • Viele Komponenten für Querschnitts- und • Für größere Projekte evtl. Spezialaufgaben noch „Framework-Arbeit“ notwendig • Hohe Qualität • Gute Dokumentation 29
  • Carsten Lucke Das Zend Framework Bewertung des Zend Framework Pro: Contra: • Durchdachte MVC- • Einsatz von Zend_View in Umsetzung größeren Projekten / kompl. Views zu überdenken • Viele Komponenten für Querschnitts- und • Für größere Projekte evtl. Spezialaufgaben noch „Framework-Arbeit“ notwendig • Hohe Qualität • Framework für stark • Gute Dokumentation dialogbasierte Systeme evtl. nicht der richtige Ansatz 29
  • Carsten Lucke Das Zend Framework Vielen Dank für Ihre Aufmerksamkeit! Haben Sie Fragen? http://lucke.info 30