PHP5 et Zend Framework
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

PHP5 et Zend Framework

on

  • 10,062 views

 

Statistics

Views

Total Views
10,062
Views on SlideShare
9,904
Embed Views
158

Actions

Likes
3
Downloads
444
Comments
0

4 Embeds 158

http://www.dyalo.com 143
http://www.slideshare.net 10
http://127.0.0.1 3
http://freelancertech.net 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

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…
Post Comment
Edit your comment

PHP5 et Zend Framework Presentation Transcript

  • 1. PHP5: Développement avec Zend Framework The PHP framework leader for Web application developement Présenté par Ndjido Ardo BAR [email_address]
  • 2. Sommaire
    • Généralités sur PHP
    • Les nouveautés sur PHP5
    • PHP5 et le paradigme objet
    • Les Design Patterns
    • Introduction au Zend Framework
    • Présentation de quelques classes
    • L’architecture MVC
    • Moteur de Template
    • Conclusion
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 3. GÉNÉRALITÉS SUR PHP mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 4. Généralités sur PHP—HISTORIQUE 1/2
    • PHP signifie PHP Hypertext Preprocessor
    • La première version de php est créée en perl par Rasmus Lerdorf en 1994.
    • Cette version était destinée à une utilisation personnelle.
    • Par suite elle est étendue à php/FI avec l’addition du package Form Interpreter.
    • En 1997 deux étudiants du nom de Zeev Surastki et Andy Gutmans créent un nouveau parseur en c pour php. Ce qui donne naissance à PHP3.
    • En 2003 sort la version 4 de php avec un nouveau moteur (Zend Engine) qui marche sur plusieurs serveurs web autre que Apache.
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 5. Généralités sur PHP—HISTORIQUE 2/2
    • Actuellement, php est maintenue par l’entreprise Zend avec une équipe dynamique de développeurs. Zend développe aussi la plateforme Zend Framework et l’environnement de développement Zend IDE.
    • En plus de respecter davantage le paradigme Object (classe, message, exception…), PHP5 apporte des nouveautés telle que la base de données embarquée SqLite, php6 s’annonce avec beaucoup de fonctions orientées WEB 2.0
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 6. Généralités sur PHP—Caractéristique 1/1
    • PHP est langage qui s’exécute coté serveur
    • Il est interprété par le Zend Engine, par opposition aux langage compilé comme le c
    • PHP est indépendant de la plateforme
    • PHP est open source, (code source accessible sur le net)
    • PHP est un langage extensible
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 7. Généralités sur PHP– Fonctionnement 1/1 mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page L’architecture CLIENT/SERVEUR
  • 8. Généralités sur PHP—Avantages de php
    • PHP est très facile à apprendre
    • PHP dispose d’une documentation énorme à travers les forums, les sites spécialisés, les mailling liste…
    • PHP étant open source dispose d’un système efficace de détection de bugs
    • PHP supporte une large variété de SGBD (MySql, Oracle, Posgresql…)
    • On peut aussi bien développer en procédural qu’avec le paradigme objet
    • On trouve de nombreuses application développées en php: jOOMLA, phpBB…
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 9. Généralités sur PHP—Faiblesses 1/1
    • PHP est faiblement typé Exemple: le code suivant ne génère pas d’erreur <?php $var = array(); $var = ’11ESD’; ?>
    • Problème de sécurité: exemple injection sql
    • Existence de code amateur sur le net
    • Mauvaise pratique du développement avec php4 (spaghetti code dû au mélange de codes php et html)
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 10. PHP 5 : LES NOUVEAUTÉS mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 11. Nouveautés sur PHP5 1/2
    • Le paradigme objet
      • Le nouveau model objet implémente des méthodes spécifiques
        • Exemple: __construct(); __get(); __set()…
      • Gestion des exceptions
      • Existence d’Interfaces => Polymorphisme
      • Héritage
    • SQLITE
      • Sqlite est une simulation de base de donnée à travers des fichiers plats. Son avantage est de pouvoir utiliser du SQL sur des fichiers.
      • Il hérite toutefois des faiblesses des fichiers c’est-à-dire le manque de sécurité et le nombre limité de données pouvant être stocker
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 12. Nouveautés sur PHP5 2/2
    • SimpleXML permet d’interpréter des fichiers xml d’une manière très simple.
    • Une nouvelle version de l’interface DOM qui permet de manipuler les fichiers xml.
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 13. PHP 5 & LE PARADIGME OBJET mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 14. Le paradigme Objet 1/5
    • Un objet est une entité cohérente rassemblant des données et du code travaillant sur ses données.
    • Une classe peut être considérée somme un moule à partir duquel on peut créer des objets.
    • La notion de classe peut être considérée comme une expression de la notion de classe d’équivalence chère aux mathématiciens.
    • Les classes sont la méta donnée des objets.
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 15. Le paradigme Objet 2/5
    • Une classe décrit la structure interne d’un objet. Elle encapsule les données et les actions qu’il est capable d’effectuer sur celles-ci.
    • L’instanciation est l’opération qui permet de créer une objet à partir d’une classe.
    • Exemple:
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page # itsRadius : double # itsCenter : Point CIRCLE + Area() : double + Circumference(): double + SetCenter(Point) + SetRadius() Classe Instances itsRadius = 2,7 itsCenter = (2;1) itsRadius = 2,7 itsCenter = (2;7)
  • 16. Le paradigme Objet 3/5
    • Le principe d’ENCAPSULATION
      • Prône, d’une part le rassemblent des données et du code les utilisant dans une entité unique nommé objet, d’autre part, la séparation nette entre la partie publique d’un objet seule connue de l’utilisateur de la partie privée qui doit rester masquée.
    • L’HERITAGE
      • Il est basé sur l’idée qu’un objet spécialisé bénéficie ou hérite des caractéristiques de l’objet le plus général auquel il rajoute ses éléments propres.
        • On associe une classe au concept le plus général, c’est la classe de base ou classe mère ou super-classe;
        • On dérive une classe du concept de base. La nouvelle classe est dite classe dérivée , fille ou sous-classe.
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 17. Le paradigme Objet 4/5
    • Exemple de diagramme d’héritage
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page SHAPE + Draw(); + Erase(); SQUARE CIRCLE
  • 18. Le paradigme Objet 5/5
    • Le POLYMORPHISME
      • Troisième principe du paradigme objet, il permet à une méthode d’adopter plusieurs forme sur des classes différentes. Selon les langages, le polymorphisme pourra s’exprimer sur l’ensemble des classes d’un système alors que d’autres le confinent aux classe appartenant à une même hiérarchie.
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 19. PHP & le paradigme Objet 1/10
    • PHP 4 implémente déjà le concept orienté-objet mais le modèle qu’il propose ne contient ni interfaces, ni exceptions, ni méthodes spécialisé. De plus l’utilisation d’objet accusait une certaine lenteur d’exécution.
    • PHP 5 fournir un ensemble d’objets conformes au paradigme orienté-objet (exception, méthode spécialisé…)
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 20. PHP & le paradigme Objet 2/10
    • Structure d’une class en PHP5
        • class MessageHandler
        • {
        • var $message = “No message”;
        • function __construct ($message)
        • {
        • $this- > message = $message;
        • }
        • function displayMessage()
        • {
        • echo $this->message.” ”;
        • }
        • }
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 21. PHP & le paradigme Objet 3/10
    • Utilisation d’un objet
        • <?php
        • Require_once(‘MessageHandler.php’);
        • $myMessage = new MessageHandler(‘HI, THE FOLK MIAGE !’);
        • $myMessage->displayMessage();
        • ?>
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 22. PHP & le paradigme Objet 4/10
    • On peut créer une classe dans un contexte plus général en utilisant le concept de classe abstraite . C’est une classe qui ne peut être instanciée qu’après son extension.
      • Exemple
        • <?php
        • abstract class MessageHandler
        • {
        • abstract public function setMessage();
        • }
        • ?>
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page CLASSE ABSTRAITE
  • 23. PHP & le paradigme Objet 5/10
    • L’héritage en PHP 5
        • require_once(‘MessageHandler.php’);
        • class New_MessageHandler exdends MessageHandler
        • {
        • function __construct($message)
        • {
        • parent :: __construct($message);
        • }
        • function lowerCaseMessage ()
        • {
        • $this->message = strtolower($this->message);
        • $this->displayMessage();
        • }
        • }
    mardi 2 juin 2009 | Page Zend Framework Présenté par Ndjido Ardo BAR
  • 24. PHP & le paradigme Objet 6/10
    • L’héritage multiple n’existant par en PHP, les interfaces constituent un mécanisme de remplacement.
    • Les interfaces sont comparables à des classes sans attributs (mise à part les constantes ) dont toutes les méthodes sont abstraites.
    • Une classe peut implémenter plusieurs interfaces. Les méthodes décrites dans les interfaces sont polymorphes car étant indépendantes
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page LES INTERFACES
  • 25. PHP & le paradigme Objet 7/10 mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page Exemple d’implémentation d’interface
  • 26. PHP & le paradigme Objet 8/10
    • Code d’implémentation
      • interface Pet
      • {
      • public function getName();
      • public function getBreed();
      • }
      • Class Bird implements Pet
      • {
      • Var $name = null;
      • Var $breed = null;
      • Function getName(){ return $this->name;}
      • Function getBreed(){ return $this->breed;}
      • }
      • Toutes les méthodes doivent être implémentées.
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 27. PHP & le paradigme Objet 9/10
    • Les exceptions représentent l’un des nouveaux mécanismes de gestion d’erreurs les plus évolués.
    • Son but est d’isoler des portions de code utilisant des objets susceptibles de générer des erreurs. De ce fait le développeur évite l’arrêt brusque de l’exécution d’une application (bug) .
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page LES EXCEPTIONS
  • 28. PHP & le paradigme Objet 10/10
    • class Car
    • {
    • private $gas = 0;
    • private function addGas ($amount)
    • {
    • $this->gas = $this->gas + $amount;
    • echo “$amount gallons added to gas tank”;
    • }
    • function buyGas($amount)
    • {
    • $this->addGas($amount);
    • }
    • }
    • private function addGas ($amount){
    • Try {
    • if ($amount< 0){
    • throw new Exception ( “Negative amount of gas.”);
    • }
    • else{
    • $this->gas = $this->gas + $amount;
    • echo “$amount gallons added to gas tank”;
    • } }
    • catch ( Exception $e )
    • {
    • echo $e->getMessage();
    • echo “ <br /> ”;
    • exit();
    • } }
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page Exemple d’utilisation d’une EXECPTION
  • 29. Les méthodes MAGIQUES de PHP5
    • PHP5 fournit des méthodes spécifiques que l’on qualifient de magiques. Ces méthodes ont la particularité de débuter tous par un double underscore (__).Celles-ci sont invoquées de manière automatique. Les invocations sont relatives à des événements tels que:
      • L’instanciation d’un objet => __construction(…) ;
      • La destruction d’un objet => __destruct() ;
      • Première référence à un objet => __ autoload() ;
      • Copie d’un objet avec le mot clé «clone» => __ clone() ;
      • Tentative de récupération ou de modification d’une attribut d’un objet non défini => respectivement __ get () et __ set ();
      • Invocation d’une méthode non définie => __ call() ;
      • Etc…
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 30. LES DESIGN PATTERNS mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 31. Les DESIGN PATTERN 1/6
    • Un design pattern est une solution à un problème connu de la plupart des développeurs. Il ne dépend pas du langage utilisé. Seulement nous nous intéresserons aux design pattern Orienté-objet.
    • Les avantages sont:
      • La facilité de maintenance du code
      • La lisibilité du code
      • La facilité dans le développement de grandes applications
      • L’accès à une documentation bien fournie
      • Le développement de code utilisable par d’autres personnes
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 32. Les DESIGN PATTERN 2/6
    • Les design pattern les plus utilisés sur PHP sont:
      • Le FACTORY PATTERN
      • Le SINGLETON PATTERN
      • LA FRONT PATTERN
      • L’ OBSERVEBALE PATTERN
      • LA STRATEGIE PATTERN
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 33. Les DESIGN PATTERN 3/6
    • FACTORY PATTERN:
      • Problématique : disposer d’une interface pour créer une famille d’objets.
      • Solution : création d’une fabrique de fabrique. La factory pattern fournit des méthodes pour créer des objets. On utilise la class factory au lieux du mot clé new pour créer des objets.
      • Exemple: Zend_Db::factory(); permet de créer un objet connexion selon le type de base de donnée.
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 34. Les DESIGN PATTERN 4/6 mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page Exemple de fabrique d’objets
  • 35. Les DESIGN PATTERN 5/6
    • SINGLETON PATTERN
      • Problématique : Certaines ressources sont exclusives dans une application du fait qu’elles sont les seules à être disponibles. Par exemple la connexion à une base de donnée. Une alternation de connexion et déconnexion à une base pour une même application est une mauvaise pratique de développement.
      • Solution : Le singleton pattern permet de restreindre le nombre d’instance d’un objet à un (01) durant toute la durée d’exécution d’une application. Généralement c’est la méthode getInstance () qui est utilisée au lieux du mot clé new pour créer un objet.
      • Exemple: Zend_Controller_Front::getInstance(); permet dans ZF de créer un contrôler.
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 36. Les DESIGN PATTERN 6/6
    • FRONT PATTERN
      • Problématique : Comment masquer la complexité d'une API qui réponds à un besoin simple.
      • Solution : Un objet qui s'occupe de masquer la complexité des objets sous-jacents.
      • Exemple: La gestion d’un objet requête dans l’architecture MVC de Zend Framework suit un processus relativement complexe, c’est pour cacher cette complexité que l’objet Zend_Controller_Front est mis en place.
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 37. INTRODUCTION AU ZEND FRAMEWORK mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 38. Introduction au Zend Framework
    • Qu’est ce donc qu’un FRAMEWORK?
      • Ensemble de bibliothèques /classes / fonctions et de conventions permettant le développement rapide d'applications. Donne un cadre structuré et impose une rigueur entraînant la production de code fiable et facile à maintenir.
      • Dans le cadre de la POO, l’utilisation d’un framework permet de réaliser un gain énorme et temps et en simplicité.
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page NOT REINVENT THE WHEEL!!
  • 39. Qu’est ce que Zend Framework?
    • Une bibliothèque de classes PHP 5 pour le développement web;
    • Gratuit, open source, BSD license (comme PHP);
    • +150,000 lignes de code;
    • Accent mis sur la qualité;
    • Les solutions y sont “très simples” – avec des possibilités d’extension;
    • +200,000 téléchargements.
    • http://framework.zend.com/
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 40. Historique du Zend Framework
    • Créé le 19 Octobre 2005 par l‘entreprise Zend en Californie.
    • Première publication officielle datant du 03 Mars 2006 (V0.1.1)
    • 12 version depuis 2006
    • Version actuelle 1.5.0
    • La version officielle est en ce moment la 1.3.0
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 41. Contenu du Zend Framework?
      • MVC web app framework (model-view-controller)
      • Database access
      • Lucene-compatible Search engine
      • Input filtering and validation
      • Authentication
      • Access control
      • Session handling
      • I18N, translation
      • PDF file reading and writing
      • HTTP client
      • XmlRpc
      • REST web services
      • RSS and Atom feeds
      • Google Gdata client
      • Logging
      • Mail reading and sending
      • Caching
      • Configuration file handling
      • Command-line option parsing
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
    • Simple, convenient object-oriented solutions to common web application development tasks:
  • 42. Aperçu de l’API mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 43. Aperçu du contenu1/4
    • MVC Layer
      • Zend_Controller – Controller Pattern
      • Zend_View – View Pattern
    • DATA Layer
      • Zend_Db – Database Handling
      • Zend_Pdf – PDF Creation and Handling
      • Zend_Search – Lucene Search
    • I18N Layer
      • Zend_Date – Localized Date handling
      • Zend_Locale – I18N Base class, Localisation
      • Zend_Measure – Measurements, conversions
      • Zend_Translate – Translations
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 44. Aperçu du contenu2/4
    • WEB Services Layer
      • Zend_Feed – RSS und ATOM Feeds
      • Zend_GData – Google Data Client
      • Zend_Http – HTTP Client and Server
      • Zend_Json – JSON Access
      • Zend_Rest – Rest Client and Server
      • Zend_XmlRpc – XMLRPC Client and Server
      • Zend_Service – Access for different web services including
        • Askimet
        • Amazon
        • Audioscrobbler
        • Delicious
        • Flickr
        • Simpy
        • Yahoo
        • and more are already in the incubator or proposed
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 45. Aperçu du contenu 3/4
    • Core Layer
      • Zend_Acl – Access Controll List, Limiting ressources, roles, users
      • Zend_Auth – Authentication
      • Zend_Cache – Caching
      • Zend_Config – Configuration Handling
      • Zend_Console – Console Options Handling
      • Zend_Filter – Filtering Input data
      • Zend_Log – Log file Handling (log4j based)
      • Zend_Mail – Mail sending and receiving
      • Zend_Memory – Memory Access when memory is limited
      • Zend_Registry – Storing data within an application registry
      • Zend_Session – Session Handling
      • Zend_Validate – Validating
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 46. Aperçu du contenu4/4
    • Incubator Components… after 1.0 release, already partitial useable
      • Zend_Currency – Localized currency handling (I18N)
      • Zend_Environment – (Core)
      • Zend_Form – Form handling (MVC)
      • Zend_Soap – Soap Client and Server (Services)
      • Zend_Timesync – Timeserver access (NTP, SNTP) (I18N)
    • Future Components
      • Several additional components proposed including…
      • LDAP, Calendar, PayPal, YouTube, Yaml…
    • Proposals
      • http://framework.zend.com/wiki/display/ZFPROP/Home
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 47. Configuration repertoire
    • /Zend
    • /Zend/Locale.php
    • /Zend/Locale
    • /Zend/Locale/Format.php
    • Un composant est toujours une classe de base et ses classes dérivées sont dans un répertoire du même nom…
    • De ce fait on peut utiliser quelques composant sans installer la totalité du framework.
    • Cette configuration permet de charger les classes facilement avec l’objet Zend_Loader.
    • Exemple: Supposons qu’on veut utiliser la classe “Zend_Version”
    • Zend_Loader::loadClass(‘Zend_Version’);
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 48. Minimum requis pour ZF
    • Le minimum requis pour faire marcher ZF
      • PHP 5.1.4
      • Un serveur Web
      • Une installation standard
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 49. Installation de Zend Framework 1/2
    • Arborescence minimale
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 50. Installation de Zend Framework 2/2
    • L’ INCLUDE_PATH est un paramètre qui définit la place où les classes et les fonctions sont recherchées lorsqu’elles sont invoquées .
    • L’installation de ZF consiste à ajouter le répertoire « Zend » dans l’ include_path .
    • Mise en œuvre : ici « Zend » est dans « library »
      • set_include_path ( '.'. PATH_SEPARATOR .'./ library /'.PATH_SEPARATOR.'./models'.PATH_SEPARATOR. get_include_path ());
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 51. PRÉSENTATION DE QUELQUES CLASSES mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 52. ZEND_LOADER
    • « Zend_Loader » est une classe qui permet de charger les autres composants du ZF d’une manière élégante. Elle adopte la convention de PEAR.
    • Mise en œuvre:
        • <?php
        • require('Zend/Loader.php');
        • Zend_Loader :: loadClass ( ‘Zend_Version');
        • ?>
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 53. ZEND_VERSION
    • Il est souvent utile de connaître la version de ZF de notre hébergeur si on ne l’installe pas soi même. L’objet «Zend_Version » est créé à cet effet
    • Mise en œuvre:
        • <?php
        • require('Zend/Loader.php');
        • Zend_Loader::loadClass(‘Zend_Version');
        • if (Zend_Version:: compareVersion (‘1.0.beta') > 0) {
        • echo &quot;Please upgrade to a newer version of ZF for this exemple. &quot;;
        • } else {
        • echo &quot; Ready to use Zend Framework! &quot;;
        • }
        • ?>  
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 54. ZEND_CONFIG & Zend_Config_{Ini,Xml} 1/2
    • Ce objet permet la séparation de la configuration de l’application et du code source. Les paramètres de configuration sont mis dans un fichier «. ini » ou « .xml ».
    • Mise en œuvre:
      • <?php
      • Zend_Loader::loadClass( 'Zend_Config');
      • Zend_Loader::loadClass( 'Zend_Config_Ini');
      • $config = new Zend_Config_Ini('./config/config.ini', ‘db_conf');
      • ?>
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 55. ZEND_CONFIG & Zend_Config_{Ini,Xml} 2/2
    • Exemple de fichier de configuration « .ini » pour la configuration d’une base de données
      • #DATABASE CONFIG
      • [db_conf]
      • db . adapter = Pdo_Mysql #’Pdo_oci’ ou ‘Pdo_Pgsql’…
      • db.config . host = localhost
      • db.config . username = root
      • db.config . password =
      • db.config . dbname = zf_lab
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 56. ZEND_DB
    • Ce objet permet d’accéder à une base de donnée. Il implémente le concept de Factory Pattern .
    • Mise en œuvre:
      • <?php
      • Zend_Loader::loadClass( 'Zend_DB');
      • $db = Zend_Db:: factory ($config->db->adapter,
      • $config->db->config->toArray());
      • $db-> getConnection ();
      • $db-> setFetchMode (Zend_db:: FETCH_OBJ );
      • ?>
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 57. ZEND_Db_TABLE: Le ORM (Mapping Objet Relationnel)
    • L’objet « Zend_Db_Table » permet d’interpréter une table d’une base de donnée comme un objet. Les données peuvent de ce fait être récupérées sans utiliser de requête SQL.
    • Cet objet est la base de l’entité M (Model) de l’architecture MVC.
    • Pour faire du ORM, on dérive la classe Zend_Db_Table_Abstract et de définir des méthodes qui traiterons les données si necessaire.
    • Mise en œuvre voir l’ model MVC
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 58. L’ARCHITECTURE MVC mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 59. L’architecture MVC 1/7
    • MVC = M odel V iew C ontroller
    • Le model MVC est un design pattern dont l’objectif est de séparer les différentes parties d’une application:
        • La présentation  VIEW=VUE
        • La logique métier  MODELE
        • Le contrôleur  Controller
    • Cette séparation a l’avantage de répartir les groupes de travail sur un projet. La modification d’une partie n’affectant pas forcément les autres.
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 60. L’architecture MVC 2/7
    • Représentation graphique du model
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 61. L’architecture MVC 3/7
    • Le Controller à travers ZEND_CONTROLER_FRONT cette classe implémente un FRONT PATTERN de ce fait elle cache toute la complexité du traitement d’une requête utilisateur. L’objet implémente aussi le SINGLETON PATTERN c’est-à-dire qu’un seul objet de ce type peut être instancié.
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page Zend_Controler_Front
  • 62. L’architecture MVC 4/7
    • Zend_Controller_Front 1/2
      • Mise en œuvre:
      • <?php
      • Zend_Loader::loadClass( 'Zend_Controller_Front');
      • $controller = Zend_Controller_Front:: getInstance ();
      • $controller->run( './controllers');
      • ?>
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page Répertoire contenant la classe du contrôleur
  • 63. L’architecture MVC 5/7
    • Zend_Controller_Front 2/2
      • <?php
      • @ require_once 'Zend/Loader.php';
      • Zend_Loader::loadClass( 'Zend_Controller_Action');
      • Zend_Loader::loadClass( 'Zend_Registry');
      • class IndexController extends Zend_Controller_Action{
      • public function index Action (){ }
      • public function add Action (){ }
      • public function edit Action (){ }
      • public function delete Action (){
      • }
      • }
      • ?>
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 64. L’architecture MVC 6/ 7 Le Model 1/2
    • Le M = model de MVC représente la partie qui contient le code métier et les accès aux données de l’application. L’accès aux données peux se faire via une dérivée de la classe Zend_Db_Table comme nous l’avons déjà précisé.
    • Mise en œuvre:
      • <?php
      • @ require_once 'Zend/Loader.php';
      • Zend_Loader::loadClass( 'Zend_Db_Table_Abstract');
      • Zend_Loader::loadClass( 'Zend_Registry');
      • class Contact extends Zend_Db_Table_Abstract {
      • protected $_name = &quot;Contact&quot;;
      • protected $_primary = &quot;Id&quot;;
      • }
      • ?>
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 65. L’architecture MVC 6/ 7 Le Model 2/2
    • Utilisation de la table Contact à travers un objet
    • Mise en œuvre
      • Dans la méthode indexAction()
      • <?php
      • Zend_Loader::loadClass( 'Contact');
      • $contact = new Contact ();
      • $result = $contact->fetchAll()->toArray();
      • ?>
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 66. L’architecture MVC 7/ 7 La Vue 1/1
    • V= la Vue représente la partie présentation de l’application, son rôle d’afficher le résultat des requêtes de présenter des formulaires de soumission. Elle est prise en charge par un graphiste. L’objet Zend_View se charge de l’interprétation des vues. Il est aidé en cela par des objet nommés Helpers dont le but est de créer des éléments graphiques un peu plus complexes.
    • Toutefois nous trouvons que cet objet n’assure pas une bonne séparation entre les entités du model MVC, si bien que nous sommes amenés à introduire la notion de « moteur de template »
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 67. MOTEUR DE TEMPLATE: SMARTY mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 68. Moteur de template 1/6
    • Qu’est ce qu’un moteur de template?
      • Un moteur de template est une classe qui permet la séparation de la couche présentation et de la couche métier d’une application .
      • Exemple:
        • SMARTY
        • VTemplate
        • ModeliXE
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 69. Moteur de template 2/6
    • SMARTY est un MT open source.
    • Principe:
      • L'idée est de déporter la logique d'affichage depuis le script PHP vers le gabarit.
      • Les gabarits sont des fichiers avec l’extension «.tpl».
      • Ces fichiers ont leur propre langage de présentation dit langage de Template qui est souvent mélangé au code HTML. Ce langage qui est très simple doit être connu du graphiste d’un projet d’application web.
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page SMARTY
  • 70. Moteur de template 3/6
    • Exemple de code de gabarit
      • <div id=&quot;content&quot;>
      • <table border=1>
      • {foreach item=contact from=$contacts }
      • <tr>
      • {foreach key=key item=item from=$contact }
      • <td> {$item} </td>
      • {/foreach}
      • </tr>
      • {/foreach}
      • </table>
      • </div>
      • </body>
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 71. Moteur de template 4/6
    • Zend_View et SMARTY
      • Comme l’objet Zend_View n’assure pas une séparation optimale entre la présentation est la logique de l’application, on se propose d’étendre la classe en y insérant un moteur SMARTY. Après cette dérivation l’objet Zend_View pourra être utilisé comme auparavant.
        • Nous avons déjà fait l’extension (pour la mise en œuvre).
      • Intéressons nous donc à la configuration du moteur et à son utilisation.
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 72. Moteur de template 5/6
    • Insersion de SMARTY dans l’objet Zend_View
      • <?php
      • include_once &quot;Smarty/Smarty.class.php&quot;;
      • Zend_Loader::loadClass( 'Zend_View_Smarty');
      • $smarty = new Smarty ();
      • $smarty->template_dir = 'views/scripts/ templates ';
      • $smarty->compile_dir = 'views/scripts/ templates_c ';
      • $smarty->config_dir = 'views/scripts/ configs /';
      • $smarty->cache_dir = 'views/scripts/ cache /';
      • $smarty_view = new Zend_View_Smarty ;
      • $smarty_view-> setEngine ($smarty);
      • ?>
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 73. Moteur de template 6/6
    • Utilisation du moteur
      • public function indexAction(){
      • Zend_Loader::loadClass('Contact');
      • $smarty = Zend_Registry::get('smarty');
      • $contact = new Contact();
      • $result = $contact->fetchAll()->toArray();
      • $smarty->title ='My contacts!';
      • $smarty-> assign ('contacts',$result);
      • echo $smarty-> render (&quot; index.tpl &quot;);
      • }
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 74. Conclusion
    • Des solutions simples
    • Facile à manipuler
    • Facile à étendre
    • Grande qualité de code
    • Evolution très rapide
    mardi 2 juin 2009 Zend Framework Présenté par Ndjido Ardo BAR | Page
  • 75. MERCI KEEP ON USING FRAMEWORKS