SlideShare una empresa de Scribd logo
1 de 44
Zend Framework
Einführung

09. Dezember 2008
PHP UG Karlsruhe
Inhalt

    • Part I : Grundlagen eines Frameworks
    • Part II : Verschiedene Frameworks für PHP
    • Part III : Einführung und Überblick in das ZF
    • Part IV : Praktische Beispiele
    • Part V : Ausblick
Who’s this guy?



 • Max Stockner
 • Just Another PHP Hacker

 • Student der Informatik
   University of Applied Science Karlsruhe

 • Zend Framework Contributor
 • Verfolge das ZF seit 0.1.0
Part I




         Frameworks?!
Was ist ein Framework?

 In der Softwareentwicklung ist ein Framework
 eine definierte Struktur in welcher andere
 Software Projekte organisiert und entwickelt
 werden.



 • Ein abstraktes Design
 • Ein Set von oft genutzter Funktionalität
 • Entwickelt auf spezielle(n) Bereich(e)
Warum sollten wir Frameworks nutzen?


 •   Strukturiertes System
 •   Source Code wird verwaltbarer
 •   Leicht zu erweitern (80/20!)
 •   Schnelle Entwicklung (RAD)
 •   Projektfremde Entwickler finden sich schneller
     zurecht, wenn Sie das Framework kennen.
 •   Support/Community
Was ist MVC?

 • Model-View-Controller Entwurfsmuster
 • Lösungsvorschlag um die Anwendungslogik
   von der Darstellung zu abstrahieren.

                                 • Model:
            Controller
                                   Data Provider und
                                   Datenmanipulationslogik

                                 • View:
                                   Die Enduseransicht
    View                 Model




                                 • Controller:
                                   Verarbeitet die Anfrage und
                                   entscheidet was wo passiert
MVC in webbasierten Anwendungen

           S     start             S      start



       HTML Kopf            Bootstrap File
                          (single entry point)

                          Setup environment

   Datenbankverbindung




     HTML Kopflayout          Controller File
                           (application logic)


                                                   Model File
    Datenbankabfrage                              (data logic)



                           View Template File
   PHP HTML Ausgabe      (HTML, JSON, PDF, ...)




       HTML Fuss
                                           end



                   end
Part II


       Verschiedene
      Frameworks für
           PHP
Kleine Auswahl
Ein paar populäre

 • CakePHP
     Angelehnt nach dem RoR Prinzip
 • CodeIgniter
     MVC Framework
 • Drupal
     Open Source Framework und CMS
 • PRADO
     Ein MVC Framework
 • Symfony
     PHP5 MVC Framework
 • Zend Framework
     Komponenten Bibliothek
 • ezComponents
     Komponenten Bibliothek
welches soll ich nehmen?

 • Variiert je nach Verwendungszweck

 • Sorgfältig auswählen
     Community
     Support (kommerziell?)
     Funktionalität
     Dokumentation
     Aktivität
Part III


     Einführung und
     Überblick in das
     Zend Framework
Was ist das ZF?




 • It’s just another PHP Framework
Nee, was ist das jetzt?




 • It’s a glue library
Spass beiseite, ZF?!

 • reine PHP 5 Komponentenbibliothek
 • Open Source
     BSD Lizenz
     CLA Prozess für Mitentwickler

 • sehr große Dokumentation
     in vielen Sprachen
      … leider teilweise sehr technisch.

 • Qualität geht vor Quantität
     TDD
      • mindestens 80% Code Coverage
      • 90% angestrebt
ZF Philosophie

 • Simpel und erweiterbar
     Einfache Lösung für 80% der Funktionalität
     Einfach erweiterbar für die restlichen 20%

 • Objektorientiert und agile Methoden
     Use-at-will Architektur
     Erweiterbarkeit
     Ständiges Testen
     Community spielt eine große Rolle
ZF Qualitätsprozess

 • Sag was du machen willst
     Proposal Prozess

 • Mach es einfach
     Objektorientierte Komponente entwicklen
     Schreibe Unit-Test dafür
      • wenn möglich schon davor (TDD)
     Dokumentation erstellen

 • Überpüfe ob es das macht was du sagtest
     Open Source Entwicklung und Community Bewertung
     Häufiges testen mit PHPUnit (inkl. code coverage)
     Zend überprüft auf Erfüllung und Nutzen
Technologie Partner
Was ist dabei im Zend Framework?

  •   MVC                     • Zend_Controller
  •   Database                     Front controller
  •   I18N                         Router
  •   Auth and ACLs                Dispatcher
  •   Web Services                 Action controller
  •   Mail, Formats, Search        Plugins and Helpers
  •   Utility                      Request and Response
  •   Other                   • Zend_View
                                 PHP-based views
                                 Helpers
                              • Zend_Layout
                                 Two Step Views
                              • Zend_Form
Was ist dabei im Zend Framework?

  •   MVC                     • Zend_Db_Adapter
  •   Database                   Adapters for most
  •   I18N                        database extensions
                                  provided by PHP
  •   Auth and ACLs
  •   Web Services            • Zend_Db_Profiler
  •   Mail, Formats, Search   • Zend_Db_Select
  •   Utility                 • Zend_Db_Table
  •   Other                      Zend_Db_Table_Rowset
                                 Zend_Db_Table_Row
Was ist dabei im Zend Framework?

  •   MVC                     •   Zend_Locale
  •   Database                •   Zend_Date
  •   I18N                    •   Zend_Currency
  •   Auth and ACLs
                              •   Zend_Timesync
  •   Web Services
  •   Mail, Formats, Search   •   Zend_Measure
  •   Utility                 •   Zend_Translate
  •   Other                        Adapters for PHP arrays,
                                    CSV, gettext, Qt, TMX,
                                    and Xliff
Was ist dabei im Zend Framework?

  •   MVC                     • Zend_Auth
  •   Database                     Zend_Db_Table adapter
  •   I18N                         HTTP Digest
  •   Auth and ACLs                HTTP Basic
  •   Web Services                 Write your own adapters
  •   Mail, Formats, Search   • Zend_Session
  •   Utility                 • Zend_Acl
  •   Other                      Roles
                                 Resources
                                 Rights
Was ist dabei im Zend Framework?

  •   MVC                     • Zend_Http_Client
  •   Database                • Zend_Rest_Client
  •   I18N                    • Zend_Service
  •   Auth and ACLs              Many, many popular
  •   Web Services                web APIs implemented
  •   Mail, Formats, Search   • Zend_Feed
  •   Utility                    RSS and Atom
  •   Other                   • Zend_Gdata
                                 Google access API to
                                  most Google services
                              • Zend_XmlRpc
                                 Consume and serve
                                  XML-RPC services
Was ist dabei im Zend Framework?

  •   MVC                     • Zend_Mail
  •   Database                   Read or send email
  •   I18N                    • Zend_Mime
  •   Auth and ACLs              Parse MIME encoded text
  •   Web Services            • Zend_Pdf
  •   Mail, Formats, Search      Read, edit, and create PDF
  •   Utility                     documents
  •   Other                   • Zend_Search_Lucene
                                 Search Lucene indices
                                 Apache Lucene
                                  compatibility
Was ist dabei im Zend Framework?

  •   MVC                     •   Zend_Cache
  •   Database                •   Zend_Config
  •   I18N                    •   Zend_Console_Getopt
  •   Auth and ACLs
                              •   Zend_Filter
  •   Web Services
  •   Mail, Formats, Search   •   Zend_Filter_Input
  •   Utility                 •   Zend_Loader
  •   Other                   •   Zend_Log
                              •   Zend_Memory
                              •   Zend_Registry
                              •   Zend_Validate
Was ist dabei im Zend Framework?

                          •   Zend_Amf
  • MVC
                          •   Zend_Captcha
  • Database
  • I18N                  •   Zend_OpenId
  • Auth and ACLs         •   Zend_InfoCard
  • Web Services          •   Zend_Test
  • Mail, Formats, Search •   ZendX_JQuery
  • Utility
  • Other                 • And
                               much
                               MUCH
Part IV


          Praktische
           Beispiele
Installation in unter einer Minute

 • Anforderungen:
      Mindestens PHP 5.1.4
       • Empfohlen 5.2.3


 • Installation:
      Herunterladen
      Entpacken
      loslegen

 • Konfiguration?
      set_include_path
      .htaccess
MVC in der einfachsten Form ...

 • Standard Url-Format:
   http://example.com/product/index
     ‘product’ ist der Name der Controller Klasse
     ‘index’ ist der Name der Action Methode in dieser Klasse



 • Controller sind Substantive
 • Actions sind Verben
… erstellen wir einen Controller …
… dann noch ne view ...

 • Views mit Zend_View sind nur PHP
… FrontController initialisieren ...

 • “Starte” die Applikation (index.php)




 • .htaccess
Und wir haben ein Ergebnis!

 • Beispiel Ausgabe
Was man wissen sollte

 • ZF schlägt eine Verzeichnisstruktur
   vor:
     application/ beinhaltet die
     eigtl. Anwendung
     library/ beinhaltet das ZF und
     eigene Libraries
     public/ beinhaltet die boostrap
     datei und die www-resourcen

 • … wem das nicht passt,
   kann es aber ändern (alles).
ZF MVC Features

 • Handelt alle eingehenden Anfragen und gibt
     die endgültige Ausgabe aus
 •   Router mapped URL und/oder Anfragen zu den
     entsprechenden Action Controller und
     Methoden
 •   Request Objekt beinhaltet die Anfrage
     Umgebung
 •   Response Objekt aggregiert die Antwort(en)
     und die Headers
 •   …
Zend_Config

 • Statische Konfiguration über
     INI
     XML
     arrays

 • Setzt typischerweiße die App.-Umgebung:
     Produktion
     Entwicklung
     Pfade
     Datenbankzugriff
     …?
Zend_Config
 • Abfrage nach Bereich
Zend_Config

 • Verberbung pro Section
Zend_Registry

 • Statische Platz zum Aufbewahrung von
   Objekten und Key/Value Paaren für globalen
   Zugriff
Part V


         Ausblick
Was kommt demnächst?

 • Zend_Tool
     Codegenerator
      •   Apache Conf
      •   PHP
      •   SQL
      •   ...                   Text
     CLI-Interface zum Ändern/Erstellen eines ZF Projektes.
      • API um vollautomatisiert Controller, Actions etc zu
        generieren


 • Zend_Ldap
     Einfacher Abfrage von Daten LDAP
     CRUD Zugriff auf Daten
     LDIF Generator/Parser
Proposals

 • Proposal Home
     52 neue Vorschläge (unfertig)
     46 fertige Vorschläge
     35 neue Komponenten im Beta Status
     …

     http://framework.zend.com/wiki/display/ZFPROP/Home
Danke!
         Mehr über das Zend Framework:
         http://framework.zend.com

Más contenido relacionado

La actualidad más candente

Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Michael Kurz
 
Restful Frontend-Architecture
Restful Frontend-ArchitectureRestful Frontend-Architecture
Restful Frontend-ArchitectureSandro Sonntag
 
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsHTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsUlrich Schmidt
 
Metadatenbasierte Validierung
Metadatenbasierte ValidierungMetadatenbasierte Validierung
Metadatenbasierte Validierungos890
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDIadesso AG
 
PRADO - Erstellung wiederverwendbarer Enterprise-Applikationen
PRADO - Erstellung wiederverwendbarer Enterprise-ApplikationenPRADO - Erstellung wiederverwendbarer Enterprise-Applikationen
PRADO - Erstellung wiederverwendbarer Enterprise-Applikationenluckec
 
Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8gedoplan
 
JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)Michael Kurz
 

La actualidad más candente (8)

Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
 
Restful Frontend-Architecture
Restful Frontend-ArchitectureRestful Frontend-Architecture
Restful Frontend-Architecture
 
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsHTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
 
Metadatenbasierte Validierung
Metadatenbasierte ValidierungMetadatenbasierte Validierung
Metadatenbasierte Validierung
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
 
PRADO - Erstellung wiederverwendbarer Enterprise-Applikationen
PRADO - Erstellung wiederverwendbarer Enterprise-ApplikationenPRADO - Erstellung wiederverwendbarer Enterprise-Applikationen
PRADO - Erstellung wiederverwendbarer Enterprise-Applikationen
 
Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8
 
JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)
 

Destacado

Ich dachte, meine Website ist responsive. Aber was ich dann sah, war unglaubl...
Ich dachte, meine Website ist responsive. Aber was ich dann sah, war unglaubl...Ich dachte, meine Website ist responsive. Aber was ich dann sah, war unglaubl...
Ich dachte, meine Website ist responsive. Aber was ich dann sah, war unglaubl...Sebastian Schally
 
High Security PHP Applications
High Security PHP ApplicationsHigh Security PHP Applications
High Security PHP Applicationsguest0e6d5e
 
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg Ralf Eggert
 
Entwicklercamp responive web design
Entwicklercamp   responive web designEntwicklercamp   responive web design
Entwicklercamp responive web designHenning Schmidt
 
jQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesjQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesMark Roden
 
Webentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQLWebentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQLKerstin Puschke
 
The Skeleton And Joints Wk3
The Skeleton And Joints Wk3The Skeleton And Joints Wk3
The Skeleton And Joints Wk3MrHall
 
PHP Optimization
PHP OptimizationPHP Optimization
PHP Optimizationdjesch
 
Css Frameworks - Ein Überblick (04/2008)
Css Frameworks - Ein Überblick (04/2008)Css Frameworks - Ein Überblick (04/2008)
Css Frameworks - Ein Überblick (04/2008)djesse
 
High performance mit PHP
High performance mit PHPHigh performance mit PHP
High performance mit PHPThomas Burgard
 
WordPress und die Sprachen
WordPress und die SprachenWordPress und die Sprachen
WordPress und die Sprachenfrankstaude
 
Eclipse PHP Tool Integration (IPC Spring 2010)
Eclipse PHP Tool Integration (IPC Spring 2010)Eclipse PHP Tool Integration (IPC Spring 2010)
Eclipse PHP Tool Integration (IPC Spring 2010)Sven Kiera
 

Destacado (18)

PHP_Codesniffer
PHP_CodesnifferPHP_Codesniffer
PHP_Codesniffer
 
Ich dachte, meine Website ist responsive. Aber was ich dann sah, war unglaubl...
Ich dachte, meine Website ist responsive. Aber was ich dann sah, war unglaubl...Ich dachte, meine Website ist responsive. Aber was ich dann sah, war unglaubl...
Ich dachte, meine Website ist responsive. Aber was ich dann sah, war unglaubl...
 
Baustein 07 grundlagen-html-css-php
Baustein 07 grundlagen-html-css-phpBaustein 07 grundlagen-html-css-php
Baustein 07 grundlagen-html-css-php
 
High Security PHP Applications
High Security PHP ApplicationsHigh Security PHP Applications
High Security PHP Applications
 
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
 
Entwicklercamp responive web design
Entwicklercamp   responive web designEntwicklercamp   responive web design
Entwicklercamp responive web design
 
jQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesjQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPages
 
Webentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQLWebentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQL
 
The Skeleton And Joints Wk3
The Skeleton And Joints Wk3The Skeleton And Joints Wk3
The Skeleton And Joints Wk3
 
PHP Optimization
PHP OptimizationPHP Optimization
PHP Optimization
 
Css Frameworks - Ein Überblick (04/2008)
Css Frameworks - Ein Überblick (04/2008)Css Frameworks - Ein Überblick (04/2008)
Css Frameworks - Ein Überblick (04/2008)
 
High performance mit PHP
High performance mit PHPHigh performance mit PHP
High performance mit PHP
 
Web Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 BetaWeb Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 Beta
 
AJAX
AJAXAJAX
AJAX
 
PHP mit Paul Bocuse
PHP mit Paul BocusePHP mit Paul Bocuse
PHP mit Paul Bocuse
 
Web Entwicklung mit PHP - Teil 2
Web Entwicklung mit PHP - Teil 2Web Entwicklung mit PHP - Teil 2
Web Entwicklung mit PHP - Teil 2
 
WordPress und die Sprachen
WordPress und die SprachenWordPress und die Sprachen
WordPress und die Sprachen
 
Eclipse PHP Tool Integration (IPC Spring 2010)
Eclipse PHP Tool Integration (IPC Spring 2010)Eclipse PHP Tool Integration (IPC Spring 2010)
Eclipse PHP Tool Integration (IPC Spring 2010)
 

Similar a PHP UG Karlsruhe - Zend Framework Introduction

JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...Peter Hecker
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der PraxisTobias Kraft
 
PrintTalk 2.0, XJDF & WebToPrint
PrintTalk 2.0, XJDF & WebToPrintPrintTalk 2.0, XJDF & WebToPrint
PrintTalk 2.0, XJDF & WebToPrintStefan Meissner
 
Per Anhalter zu Cloud-nativen API Gateways
Per Anhalter zu Cloud-nativen API GatewaysPer Anhalter zu Cloud-nativen API Gateways
Per Anhalter zu Cloud-nativen API GatewaysQAware GmbH
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magentoAOE
 
Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsTorsten Kleiber
 
Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplant
Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplantModerne Business Apps mit XAML - oder mit WPF für die Zukunft geplant
Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplantChristian Nagel
 
NetBeans für PHP-Entwickler
NetBeans für PHP-EntwicklerNetBeans für PHP-Entwickler
NetBeans für PHP-EntwicklerIngo Reinhart
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft AG
 
REST Problems
REST ProblemsREST Problems
REST Problemspredic8
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...Peter Hecker
 
Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAsQAware GmbH
 
Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Niels de Bruijn
 
Qualitätssicherung in Webprojekten
Qualitätssicherung in WebprojektenQualitätssicherung in Webprojekten
Qualitätssicherung in WebprojektenSebastian Springer
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerPatrick Baumgartner
 
Banking portal
Banking portalBanking portal
Banking portalJoeyNbg
 

Similar a PHP UG Karlsruhe - Zend Framework Introduction (20)

PHP auf IBM Plattformen
PHP auf IBM PlattformenPHP auf IBM Plattformen
PHP auf IBM Plattformen
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
 
PHPblue LOS!NRW
PHPblue LOS!NRWPHPblue LOS!NRW
PHPblue LOS!NRW
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der Praxis
 
PrintTalk 2.0, XJDF & WebToPrint
PrintTalk 2.0, XJDF & WebToPrintPrintTalk 2.0, XJDF & WebToPrint
PrintTalk 2.0, XJDF & WebToPrint
 
Per Anhalter zu Cloud-nativen API Gateways
Per Anhalter zu Cloud-nativen API GatewaysPer Anhalter zu Cloud-nativen API Gateways
Per Anhalter zu Cloud-nativen API Gateways
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magento
 
Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and Operations
 
Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplant
Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplantModerne Business Apps mit XAML - oder mit WPF für die Zukunft geplant
Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplant
 
NetBeans für PHP-Entwickler
NetBeans für PHP-EntwicklerNetBeans für PHP-Entwickler
NetBeans für PHP-Entwickler
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform Apps
 
REST Problems
REST ProblemsREST Problems
REST Problems
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
 
Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAs
 
Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)
 
BizSpark goes Cloud
BizSpark goes CloudBizSpark goes Cloud
BizSpark goes Cloud
 
Qualitätssicherung in Webprojekten
Qualitätssicherung in WebprojektenQualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
 
Einblicke in Zend Server Cluster Manager
Einblicke in Zend Server Cluster ManagerEinblicke in Zend Server Cluster Manager
Einblicke in Zend Server Cluster Manager
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als Entwickler
 
Banking portal
Banking portalBanking portal
Banking portal
 

PHP UG Karlsruhe - Zend Framework Introduction

  • 2. Inhalt • Part I : Grundlagen eines Frameworks • Part II : Verschiedene Frameworks für PHP • Part III : Einführung und Überblick in das ZF • Part IV : Praktische Beispiele • Part V : Ausblick
  • 3. Who’s this guy? • Max Stockner • Just Another PHP Hacker • Student der Informatik University of Applied Science Karlsruhe • Zend Framework Contributor • Verfolge das ZF seit 0.1.0
  • 4. Part I Frameworks?!
  • 5. Was ist ein Framework? In der Softwareentwicklung ist ein Framework eine definierte Struktur in welcher andere Software Projekte organisiert und entwickelt werden. • Ein abstraktes Design • Ein Set von oft genutzter Funktionalität • Entwickelt auf spezielle(n) Bereich(e)
  • 6. Warum sollten wir Frameworks nutzen? • Strukturiertes System • Source Code wird verwaltbarer • Leicht zu erweitern (80/20!) • Schnelle Entwicklung (RAD) • Projektfremde Entwickler finden sich schneller zurecht, wenn Sie das Framework kennen. • Support/Community
  • 7. Was ist MVC? • Model-View-Controller Entwurfsmuster • Lösungsvorschlag um die Anwendungslogik von der Darstellung zu abstrahieren. • Model: Controller Data Provider und Datenmanipulationslogik • View: Die Enduseransicht View Model • Controller: Verarbeitet die Anfrage und entscheidet was wo passiert
  • 8. MVC in webbasierten Anwendungen S start S start HTML Kopf Bootstrap File (single entry point) Setup environment Datenbankverbindung HTML Kopflayout Controller File (application logic) Model File Datenbankabfrage (data logic) View Template File PHP HTML Ausgabe (HTML, JSON, PDF, ...) HTML Fuss end end
  • 9. Part II Verschiedene Frameworks für PHP
  • 11. Ein paar populäre • CakePHP Angelehnt nach dem RoR Prinzip • CodeIgniter MVC Framework • Drupal Open Source Framework und CMS • PRADO Ein MVC Framework • Symfony PHP5 MVC Framework • Zend Framework Komponenten Bibliothek • ezComponents Komponenten Bibliothek
  • 12. welches soll ich nehmen? • Variiert je nach Verwendungszweck • Sorgfältig auswählen Community Support (kommerziell?) Funktionalität Dokumentation Aktivität
  • 13. Part III Einführung und Überblick in das Zend Framework
  • 14. Was ist das ZF? • It’s just another PHP Framework
  • 15. Nee, was ist das jetzt? • It’s a glue library
  • 16. Spass beiseite, ZF?! • reine PHP 5 Komponentenbibliothek • Open Source BSD Lizenz CLA Prozess für Mitentwickler • sehr große Dokumentation in vielen Sprachen … leider teilweise sehr technisch. • Qualität geht vor Quantität TDD • mindestens 80% Code Coverage • 90% angestrebt
  • 17. ZF Philosophie • Simpel und erweiterbar Einfache Lösung für 80% der Funktionalität Einfach erweiterbar für die restlichen 20% • Objektorientiert und agile Methoden Use-at-will Architektur Erweiterbarkeit Ständiges Testen Community spielt eine große Rolle
  • 18. ZF Qualitätsprozess • Sag was du machen willst Proposal Prozess • Mach es einfach Objektorientierte Komponente entwicklen Schreibe Unit-Test dafür • wenn möglich schon davor (TDD) Dokumentation erstellen • Überpüfe ob es das macht was du sagtest Open Source Entwicklung und Community Bewertung Häufiges testen mit PHPUnit (inkl. code coverage) Zend überprüft auf Erfüllung und Nutzen
  • 20. Was ist dabei im Zend Framework? • MVC • Zend_Controller • Database  Front controller • I18N  Router • Auth and ACLs  Dispatcher • Web Services  Action controller • Mail, Formats, Search  Plugins and Helpers • Utility  Request and Response • Other • Zend_View  PHP-based views  Helpers • Zend_Layout  Two Step Views • Zend_Form
  • 21. Was ist dabei im Zend Framework? • MVC • Zend_Db_Adapter • Database  Adapters for most • I18N database extensions provided by PHP • Auth and ACLs • Web Services • Zend_Db_Profiler • Mail, Formats, Search • Zend_Db_Select • Utility • Zend_Db_Table • Other  Zend_Db_Table_Rowset  Zend_Db_Table_Row
  • 22. Was ist dabei im Zend Framework? • MVC • Zend_Locale • Database • Zend_Date • I18N • Zend_Currency • Auth and ACLs • Zend_Timesync • Web Services • Mail, Formats, Search • Zend_Measure • Utility • Zend_Translate • Other  Adapters for PHP arrays, CSV, gettext, Qt, TMX, and Xliff
  • 23. Was ist dabei im Zend Framework? • MVC • Zend_Auth • Database  Zend_Db_Table adapter • I18N  HTTP Digest • Auth and ACLs  HTTP Basic • Web Services  Write your own adapters • Mail, Formats, Search • Zend_Session • Utility • Zend_Acl • Other  Roles  Resources  Rights
  • 24. Was ist dabei im Zend Framework? • MVC • Zend_Http_Client • Database • Zend_Rest_Client • I18N • Zend_Service • Auth and ACLs  Many, many popular • Web Services web APIs implemented • Mail, Formats, Search • Zend_Feed • Utility  RSS and Atom • Other • Zend_Gdata  Google access API to most Google services • Zend_XmlRpc  Consume and serve XML-RPC services
  • 25. Was ist dabei im Zend Framework? • MVC • Zend_Mail • Database  Read or send email • I18N • Zend_Mime • Auth and ACLs  Parse MIME encoded text • Web Services • Zend_Pdf • Mail, Formats, Search  Read, edit, and create PDF • Utility documents • Other • Zend_Search_Lucene  Search Lucene indices  Apache Lucene compatibility
  • 26. Was ist dabei im Zend Framework? • MVC • Zend_Cache • Database • Zend_Config • I18N • Zend_Console_Getopt • Auth and ACLs • Zend_Filter • Web Services • Mail, Formats, Search • Zend_Filter_Input • Utility • Zend_Loader • Other • Zend_Log • Zend_Memory • Zend_Registry • Zend_Validate
  • 27. Was ist dabei im Zend Framework? • Zend_Amf • MVC • Zend_Captcha • Database • I18N • Zend_OpenId • Auth and ACLs • Zend_InfoCard • Web Services • Zend_Test • Mail, Formats, Search • ZendX_JQuery • Utility • Other • And much MUCH
  • 28. Part IV Praktische Beispiele
  • 29. Installation in unter einer Minute • Anforderungen: Mindestens PHP 5.1.4 • Empfohlen 5.2.3 • Installation: Herunterladen Entpacken loslegen • Konfiguration? set_include_path .htaccess
  • 30. MVC in der einfachsten Form ... • Standard Url-Format: http://example.com/product/index ‘product’ ist der Name der Controller Klasse ‘index’ ist der Name der Action Methode in dieser Klasse • Controller sind Substantive • Actions sind Verben
  • 31. … erstellen wir einen Controller …
  • 32. … dann noch ne view ... • Views mit Zend_View sind nur PHP
  • 33. … FrontController initialisieren ... • “Starte” die Applikation (index.php) • .htaccess
  • 34. Und wir haben ein Ergebnis! • Beispiel Ausgabe
  • 35. Was man wissen sollte • ZF schlägt eine Verzeichnisstruktur vor: application/ beinhaltet die eigtl. Anwendung library/ beinhaltet das ZF und eigene Libraries public/ beinhaltet die boostrap datei und die www-resourcen • … wem das nicht passt, kann es aber ändern (alles).
  • 36. ZF MVC Features • Handelt alle eingehenden Anfragen und gibt die endgültige Ausgabe aus • Router mapped URL und/oder Anfragen zu den entsprechenden Action Controller und Methoden • Request Objekt beinhaltet die Anfrage Umgebung • Response Objekt aggregiert die Antwort(en) und die Headers • …
  • 37. Zend_Config • Statische Konfiguration über INI XML arrays • Setzt typischerweiße die App.-Umgebung: Produktion Entwicklung Pfade Datenbankzugriff …?
  • 38. Zend_Config • Abfrage nach Bereich
  • 40. Zend_Registry • Statische Platz zum Aufbewahrung von Objekten und Key/Value Paaren für globalen Zugriff
  • 41. Part V Ausblick
  • 42. Was kommt demnächst? • Zend_Tool Codegenerator • Apache Conf • PHP • SQL • ... Text CLI-Interface zum Ändern/Erstellen eines ZF Projektes. • API um vollautomatisiert Controller, Actions etc zu generieren • Zend_Ldap Einfacher Abfrage von Daten LDAP CRUD Zugriff auf Daten LDIF Generator/Parser
  • 43. Proposals • Proposal Home 52 neue Vorschläge (unfertig) 46 fertige Vorschläge 35 neue Komponenten im Beta Status … http://framework.zend.com/wiki/display/ZFPROP/Home
  • 44. Danke! Mehr über das Zend Framework: http://framework.zend.com

Notas del editor