Plateforme de développement en PHP5. Zend Framework + Doctrine. Présentation:  M. Morel CORNNERY M. Boubacar DOUMBOUYA
Plan Introduction Vue globale sur zend Framework Présentation Doctrine (Modèle)  Exemple d’application avec zend et doctrine Déploiement Démo
Introduction Objectif d’une plateforme de développement? Professionnaliser  le développement des application web . Comment? Avec des outils (Framework) Une structuration Une industrialisation Standardisation Internationnalisation Pérennite
Vue globale sur zend Framework Présentation Points forts Points faibles Composants Architectures Sécurité
Présentation Framework open-source PHP 5, Oriente Objet, initié par Zend.  Agé d’un plus de trois (3) ans Une communauté très vivante et qualifiée (180 pers) Des conventions complètes Une documentations en plusieurs langues (30) De nombreuses librairies pratiques Une architecture de base minimale Objectif ? Simplifier le développement des grosses applications webs. Développer plus vite Comment? Ajout de nombreux composants  (librairies ) + Une approche MVC  visant a simplifier les taches du développeur  Améliorer la qualité  du code.
Points forts Sa souplesse et sa simplicité Ses conventions complètes basées sur PEAR La structure et l’étendue de ses librairie Son model de développement ouvert La confiance et l’engagement des professionnels pour ce projets Google, IBM et plusieurs centaines de d’entreprise  qui l’utilisent actuellement Sa documentation complète
Atouts fonctionnels Documentation Configurabilité Sécurité Aide debugging Auto-loading Helpers Test fonctionnels ORM I18n/L10n (internationalisation)
Points faibles Pas de système de plugins Il faut tout créer soit même lors de la première installation (configuration, bootstrap,…) Intégration avec d’autres composants des autres Framework est assez complexe, voir impossible
Architectures 48 composants à l’heure actuelle, avec peu d’inter- dépendance Noyau (Core) Interopérabilité, services web Gestion des données Internationalisation MVC
Architecture de zend Framework
Librairies Zend_Controller Zend_Form Zend_View Zend_Acl Zend_Auth
Sécurité Les attaques courantes sur le web: XSS, injection SQL, Injection JavaScript, Session et cookies Les solution proposées par Zend: Zend_Validate Zend_Filter Zend_Session
Présentation de doctrine  Présentation Points forts Points faibles Architectures Composants
Présentation Doctrine est une (ORM) pour PHP 5.2.3+  Doctrine S'appuie sur PDO et est lui même divisé en deux couches: la couche ORM la couche DBAL Doctrine vient avec son propre langage appelé Doctrine Query Language (DQL), inspiré de Hibernates (HQL).  Ceci fournit une réelle  alternative au SQL basique maintient la flexibilité sans exiger la duplication inutile de code.
Points forts Utilisation de DQL (doctrine query language) qui permet de faciliter très largement l'écriture de requête SQL dîtes complexes Le nombre de fonctionnalités relativement important Interfaçage avec de nombreuses Bdd (oracle, ibm informix, sqlsever, postgresql, mysql,Firebird,sqlite,…) Tutoriels très efficaces et prise en main rapide Bonnes améliorations des performances liées à l'utilisation d'active record dans les dernières release
Points faibles Pas de connecteur pour les annuaires comme LDAP Communauté pas assez grande
Architecture
composants Doctrine::Manager Doctrine::Connection Doctrine::Record Doctrine::Table Doctrine::Collection Doctrine::Validator Doctrine::View
Architecture d’une application avec Zend Framework et doctrine
Architecture d’une application web avec Zend Framework Présentation Contrôle de l’application Logique métier Accès aux données Source de données
Workflow d’une requête avec zend Framework
Workflow d’une requete dans ZF Requête Réponse Routage Contrôleur (init()) Pré-envoi ACTION Post-envoi (Module/controller/action) Répartiteur (dispatcher) Contrôleur frontal
Workflow d’une requête avec Z-F Le  bootstrap  (application/bootstrap.php) est le point d'entrée dans l'application, il s'agit de l'implémentation du design pattern contrôleur frontal   et d'un  singleton . Toutes les requêtes passent par cet objet, à sa charge d'acheminer ( dispatcher ) vers les actions (suivant une route par défaut ou définie par le concepteur). Les réponses sont collectées par cet objet. La requête peut d'abord être prétraitée dans un  plugin , cela permet au concepteur d'effectuer des traitements en tout début de requête. La requête est routée, c'est à dire que l'on traduit l'URI d'entrée en lien vers le bon contrôleur. Le contrôleur est instancié, son constructeur init() est lancé. La fonction preDispatch() est lancé si elle existe juste avant de lancer l'action : par exemple readAction(...). Le contrôleur se termine et la fonction postDispatch() est lancée. La réponse est renvoyée au visiteur.
Exemple d’application avec zend et doctrine Organisation de l’application Les conventions de nommages Notions importantes Urls Bootsrap Configuration  Controllers Vues Forms Layout Models
Organisation de l’application Monapplication Application Bootsrap.php Global.php Configuration  layouts Modules Referentiel Controllers Views Library Zend Doctrine Ssi  Forms Publics
Convention de nommage #Zend_Db représente un  composant que l'on peut aussi appeler  package (en référence à  Java),  Matérialisé par le script /library/Zend/Db.php, la classe représentée étant Zend_Db. Cette convention de nommage sera utilisée pour charger des classes plus tard. Elle est identique à certains projets tels que PEAR. Remplacez les underscores ( _ ) dans le nom de la classe par des slashs ( / ), pour voir apparaître l'arborescence du fichier.
URLs Basic URL routes: •  /controller/action •  /controller/action/param/value •  /module/controller/action •  /module/controller/action/param/value Exemple: BASE_URL.'referentiel/branche/';
Bootstrap (arborescence)
Bootstrap
Bootstrap
Bootstrap(Doctrine)
Bootstrap(Doctrine suite)
configuration
Configuration
Controllers
controller
Action
Forms(arborescence)
Forms (code)
Views (Arborescences)
Views(Formulaire)
Views (Liste)
Layout (arborescence)
Layout(header)
Layout(body)
Model(arborescence)
Model(Base)
Model(Base 2)
Model (méthodes)
Déploiement  Environnement de déploiement Version PHP 5.2.x Modules PHP à activer PDO avec les drivers nécessaires php_value short_open_tag  <? ?> Version apache 2.x Modules apache a activer Mod Rewrite
CONCLUSION
FIN

Plateforme De DéVeloppement En Php5 (Zend + Doctrine)

  • 1.
    Plateforme de développementen PHP5. Zend Framework + Doctrine. Présentation: M. Morel CORNNERY M. Boubacar DOUMBOUYA
  • 2.
    Plan Introduction Vueglobale sur zend Framework Présentation Doctrine (Modèle) Exemple d’application avec zend et doctrine Déploiement Démo
  • 3.
    Introduction Objectif d’uneplateforme de développement? Professionnaliser le développement des application web . Comment? Avec des outils (Framework) Une structuration Une industrialisation Standardisation Internationnalisation Pérennite
  • 4.
    Vue globale surzend Framework Présentation Points forts Points faibles Composants Architectures Sécurité
  • 5.
    Présentation Framework open-sourcePHP 5, Oriente Objet, initié par Zend. Agé d’un plus de trois (3) ans Une communauté très vivante et qualifiée (180 pers) Des conventions complètes Une documentations en plusieurs langues (30) De nombreuses librairies pratiques Une architecture de base minimale Objectif ? Simplifier le développement des grosses applications webs. Développer plus vite Comment? Ajout de nombreux composants (librairies ) + Une approche MVC visant a simplifier les taches du développeur Améliorer la qualité du code.
  • 6.
    Points forts Sasouplesse et sa simplicité Ses conventions complètes basées sur PEAR La structure et l’étendue de ses librairie Son model de développement ouvert La confiance et l’engagement des professionnels pour ce projets Google, IBM et plusieurs centaines de d’entreprise qui l’utilisent actuellement Sa documentation complète
  • 7.
    Atouts fonctionnels DocumentationConfigurabilité Sécurité Aide debugging Auto-loading Helpers Test fonctionnels ORM I18n/L10n (internationalisation)
  • 8.
    Points faibles Pasde système de plugins Il faut tout créer soit même lors de la première installation (configuration, bootstrap,…) Intégration avec d’autres composants des autres Framework est assez complexe, voir impossible
  • 9.
    Architectures 48 composantsà l’heure actuelle, avec peu d’inter- dépendance Noyau (Core) Interopérabilité, services web Gestion des données Internationalisation MVC
  • 10.
  • 11.
    Librairies Zend_Controller Zend_FormZend_View Zend_Acl Zend_Auth
  • 12.
    Sécurité Les attaquescourantes sur le web: XSS, injection SQL, Injection JavaScript, Session et cookies Les solution proposées par Zend: Zend_Validate Zend_Filter Zend_Session
  • 13.
    Présentation de doctrine Présentation Points forts Points faibles Architectures Composants
  • 14.
    Présentation Doctrine estune (ORM) pour PHP 5.2.3+ Doctrine S'appuie sur PDO et est lui même divisé en deux couches: la couche ORM la couche DBAL Doctrine vient avec son propre langage appelé Doctrine Query Language (DQL), inspiré de Hibernates (HQL). Ceci fournit une réelle alternative au SQL basique maintient la flexibilité sans exiger la duplication inutile de code.
  • 15.
    Points forts Utilisationde DQL (doctrine query language) qui permet de faciliter très largement l'écriture de requête SQL dîtes complexes Le nombre de fonctionnalités relativement important Interfaçage avec de nombreuses Bdd (oracle, ibm informix, sqlsever, postgresql, mysql,Firebird,sqlite,…) Tutoriels très efficaces et prise en main rapide Bonnes améliorations des performances liées à l'utilisation d'active record dans les dernières release
  • 16.
    Points faibles Pasde connecteur pour les annuaires comme LDAP Communauté pas assez grande
  • 17.
  • 18.
    composants Doctrine::Manager Doctrine::ConnectionDoctrine::Record Doctrine::Table Doctrine::Collection Doctrine::Validator Doctrine::View
  • 19.
    Architecture d’une applicationavec Zend Framework et doctrine
  • 20.
    Architecture d’une applicationweb avec Zend Framework Présentation Contrôle de l’application Logique métier Accès aux données Source de données
  • 21.
    Workflow d’une requêteavec zend Framework
  • 22.
    Workflow d’une requetedans ZF Requête Réponse Routage Contrôleur (init()) Pré-envoi ACTION Post-envoi (Module/controller/action) Répartiteur (dispatcher) Contrôleur frontal
  • 23.
    Workflow d’une requêteavec Z-F Le  bootstrap  (application/bootstrap.php) est le point d'entrée dans l'application, il s'agit de l'implémentation du design pattern contrôleur frontal et d'un  singleton . Toutes les requêtes passent par cet objet, à sa charge d'acheminer ( dispatcher ) vers les actions (suivant une route par défaut ou définie par le concepteur). Les réponses sont collectées par cet objet. La requête peut d'abord être prétraitée dans un  plugin , cela permet au concepteur d'effectuer des traitements en tout début de requête. La requête est routée, c'est à dire que l'on traduit l'URI d'entrée en lien vers le bon contrôleur. Le contrôleur est instancié, son constructeur init() est lancé. La fonction preDispatch() est lancé si elle existe juste avant de lancer l'action : par exemple readAction(...). Le contrôleur se termine et la fonction postDispatch() est lancée. La réponse est renvoyée au visiteur.
  • 24.
    Exemple d’application aveczend et doctrine Organisation de l’application Les conventions de nommages Notions importantes Urls Bootsrap Configuration Controllers Vues Forms Layout Models
  • 25.
    Organisation de l’applicationMonapplication Application Bootsrap.php Global.php Configuration layouts Modules Referentiel Controllers Views Library Zend Doctrine Ssi Forms Publics
  • 26.
    Convention de nommage#Zend_Db représente un composant que l'on peut aussi appeler package (en référence à Java), Matérialisé par le script /library/Zend/Db.php, la classe représentée étant Zend_Db. Cette convention de nommage sera utilisée pour charger des classes plus tard. Elle est identique à certains projets tels que PEAR. Remplacez les underscores ( _ ) dans le nom de la classe par des slashs ( / ), pour voir apparaître l'arborescence du fichier.
  • 27.
    URLs Basic URLroutes: • /controller/action • /controller/action/param/value • /module/controller/action • /module/controller/action/param/value Exemple: BASE_URL.'referentiel/branche/';
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
    Déploiement Environnementde déploiement Version PHP 5.2.x Modules PHP à activer PDO avec les drivers nécessaires php_value short_open_tag <? ?> Version apache 2.x Modules apache a activer Mod Rewrite
  • 51.
  • 52.