zend framework - simplicity meet power
DESCRIPTION
Présentation de la technologie Zend par Nicolas Fabre du group Reflect aux Altaïde Dev' Drink, du 24 avril 2008 à la CantineTRANSCRIPT
ZEND FRAMEWORKSimplicity, Meet Power
Zend Framework :
• Introduction au Zend Framework
• Les composants du framework
• Exemples d’applications
Zend Framework
• Qui ?• Nicolas Fabre <[email protected]>
• Quoi ?• Web Developer Innovation• Zend PHP5 Certified Engineer
• Ou ?• groupe Reflect / Emakina Group
Zend Framework : c’est quoi ?
• PHP 5
• Open Source
• Code Libre• Libre de contribuer et de distribuer
• Découpage en librairies
• Ressources
• Qualités & Tests • PHPUnit
ZF : La philosophie
• Simplicité !
• Solutions faciles pour 80% des fonctionnalités le plus souvent utilisés dans une application Web.
• Extensibilité pour résoudre les 20% restants
• Pas de fichier de configuration complexe
• Bonnes pratiques
• Indépendant de l’architecture• Orienté objet• Design Pattern• Conçut pour l’extensibilité
Zend Framework : L’Architecture
Core
Registry
Config
Log
Filter
AuthMail ACL
Cache Session ...
Internationalization
Locale
Date
Translate
...
Web Services
Feed
RSS
ATOM
Client
XML-RPC
REST
HTTTP
Server
XML-RPC
REST
SOAP
Services
Amazon
Flickr
Akismet
StrikeIron
Yahoo !
...
Data
...Search
DbJSON Controller
Rewrite Router
View
Form
Layout
...
MVC
ZF : Composants MVC
• Le coeur de l’application
• MVC• Model : Données, Traitements lourds
• View : Interface Utilisateur
• Controller : Traitement des requêtes
• Solution simple en “général”
• Flexible et extensible• Options avancés
Controller
View Model
• Le Front Controller route les requêtes vers les controllers
• Le routage est un mapping de l’url
• http://www.appzend.com/controller/action/param1/value1/...
• controller : nom de la classe du Controller
• action : nom de la méthode du Controller
• key/value : paires passées à l’Action
ZF : MVC fonctionnement des routes
Front ControllerBOOTSTRAPindex.php
Controlleraction()action()
Requête HTTP
Controlleraction()action()
• Modules• regroupe les contrôleurs
• offre un niveau de hiérarchie en plus dans les urls
• http://www.appzend.com/module/controller/action/param1/value1/...
• Route configurable• Pas limité au format “module/controller/action/param”
• Route statique• http://www.appzend.com/mon-compte/
• Route regex• http://www.appzend.com/mes-archives/(\d+)
ZF : MVC fonctionnement avancés
ZF : MVC / Zend_Controller
• Actions Controllers
• héritage de Zend_Controller_Action
• Fin du nom de classe en ‘Controller’• IndexController
• Underscore indique une séparation• Admin_IndexController => Admin/Index.php
• Règle différente avec les modules
• CamelCase géré• /mon-compte/ => monCompteController
• Controller Action
• méthode public et fin du nom en ‘Action’• public function editAction()
• CamelCase géré
ZF : MVC / Zend_View
• séparation du rendu et du traitement
• n’est pas un moteur de Template
• Zend_Layout
• Helpers• facilite la construction de formulaire HTML• Extensible
• Zend_View Enhancement• Concept DRY (Don’t Repeat Yourself)
• Action() facilite le dispatch vers une Action d’un Controller
ZF : Zend_Layout
• design Pattern “Two Step View” (vue en 2 temps)• http://martinfowler.com/eaaCatalog/twoStepView.html
• Structuration de la page
• Vues dans des Vues• Appel de plusieurs actions
• Ajax Support• Helper Autocomplete
• Librairies Dojo & Scriptaculous
Album
artist: Artist
Screen
artist: Field
Stage 1
renderAlbumrenderArtist
Stage 2
rendeScreenrenderField
read
create
read
HTML
create
ZF : Zend_Form
• I18N• utilisation de Zend_Translate
• Validation complète ou partiel du formulaire
• Filtre & Validation par élément
• Totalement personnalisable
• Elements
• Decorateurs
ZF : Contexte
• Composant Zend_Controller
• ContextSwitch Helper d’action
• Possibilité de définir une vue différente• Ajout de contexte en fonction d’une action
• http:://.../controller/action/?format=xml
• Ajout d’un suffix en fonction d’un format• view/list.xml.phtml
• Contexte personnalisable
• AjaxContext Helper d’action
• Héritage de ContextSwitch• Facilite les retours Ajax
ZF : Web Services
• En ‘constante’ augmentation
• Composants Zend_Service_*
• Zend_Service_Flickr
• Zend_Service_SlideShare
• Zend_Service_Yahoo
• Zend_GData
• ...
ZF : Autres Composants
• Zend_Cache
• Factory de système de cache
• Zend_Db
• Abstraction de BDD
• Zend_Db_Table ORM
• Zend_Db_Select Création de requête
• Zend_Date
• Manipulation de date
• Zend_Feed
• Manipulation de flux RSS et ATOM
• ...
ZF : Ressources
• Site officiel : http://framework.zend.com
• Wiki du Framework : http://framework.zend.com/wiki/display/ZFDEV/Home
• Webminars Site Zend : http://www.zend.com/fr/resources/webminars/framework
• Forum FR : http://z-f.fr
• Blog de Rob Allen (en) : http://akrabat.com
• Blog de Julien Pauli : http://blog.developpez.com/?blog=126
• ...
ZF : Quelques applications
• La boite a pizza• http://www.laboiteapizza.com
• La française des jeux• http://www.lafrancaisedesjeux.com
• PokerRoom• http://www.pokerroom.com
• Top Santé• http://www.topsante.com
• Vnunet• http://www.vnunet.fr
• blueKiwi• http://www.bluekiwi-software.com
• bien d’autres...
ZF : Magento
• Solution eCommerce Open Source
• Philosophie identique au Zend Framework
• Fonctionnalités rajoutés
• Layout XML
• gestion de formulaire• système de vue remplacé par un système de block
• Extensible
• Utilisation du design Pattern Observer• surcharge d’environ 95% des fonctionnalités
Zend Framework
QUESTIONS !