Plateforme de développement en PHP5. Zend Framework + Doctrine. Présentation:  M. Morel CORNNERY M. Boubacar DOUMBOUYA
Plan <ul><li>Introduction </li></ul><ul><li>Vue globale sur zend Framework </li></ul><ul><li>Présentation Doctrine (Modèle...
Introduction <ul><li>Objectif d’une plateforme de développement? </li></ul><ul><ul><li>Professionnaliser  le développement...
Vue globale sur zend Framework <ul><li>Présentation </li></ul><ul><li>Points forts </li></ul><ul><li>Points faibles </li><...
Présentation <ul><li>Framework open-source PHP 5, Oriente Objet, initié par Zend.  </li></ul><ul><li>Agé d’un plus de troi...
Points forts <ul><li>Sa souplesse et sa simplicité </li></ul><ul><li>Ses conventions complètes basées sur PEAR </li></ul><...
Atouts fonctionnels <ul><li>Documentation </li></ul><ul><li>Configurabilité </li></ul><ul><li>Sécurité </li></ul><ul><li>A...
Points faibles <ul><li>Pas de système de plugins </li></ul><ul><li>Il faut tout créer soit même lors de la première instal...
Architectures <ul><li>48 composants à l’heure actuelle, avec peu d’inter- dépendance </li></ul><ul><ul><li>Noyau (Core) </...
Architecture de zend Framework
Librairies <ul><li>Zend_Controller </li></ul><ul><li>Zend_Form </li></ul><ul><li>Zend_View </li></ul><ul><li>Zend_Acl </li...
Sécurité <ul><li>Les attaques courantes sur le web: </li></ul><ul><ul><li>XSS, injection SQL, Injection JavaScript, Sessio...
Présentation de doctrine  <ul><li>Présentation </li></ul><ul><li>Points forts </li></ul><ul><li>Points faibles </li></ul><...
Présentation <ul><li>Doctrine est une (ORM) pour PHP 5.2.3+  </li></ul><ul><li>Doctrine S'appuie sur PDO et est lui même d...
Points forts <ul><li>Utilisation de DQL (doctrine query language) qui permet de faciliter très largement l'écriture de req...
Points faibles <ul><li>Pas de connecteur pour les annuaires comme LDAP </li></ul><ul><li>Communauté pas assez grande </li>...
Architecture
composants <ul><li>Doctrine::Manager </li></ul><ul><li>Doctrine::Connection </li></ul><ul><li>Doctrine::Record </li></ul><...
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 don...
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/...
Workflow d’une requête avec Z-F <ul><li>Le  bootstrap  (application/bootstrap.php) est le point d'entrée dans l'applicatio...
Exemple d’application avec zend et doctrine <ul><li>Organisation de l’application </li></ul><ul><li>Les conventions de nom...
Organisation de l’application <ul><li>Monapplication </li></ul><ul><ul><li>Application </li></ul></ul><ul><ul><ul><li>Boot...
Convention de nommage <ul><li>#Zend_Db représente un  composant que l'on peut aussi appeler  package (en référence à  Java...
URLs <ul><li>Basic URL routes: </li></ul><ul><li>•  /controller/action </li></ul><ul><li>•  /controller/action/param/value...
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  <ul><li>Environnement de déploiement </li></ul><ul><li>Version PHP 5.2.x </li></ul><ul><li>Modules PHP à acti...
CONCLUSION
FIN
Prochain SlideShare
Chargement dans…5
×

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

5 333 vues

Publié le

L'une de mes présentations à 2SI la SSII où je travaille

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
5 333
Sur SlideShare
0
Issues des intégrations
0
Intégrations
36
Actions
Partages
0
Téléchargements
372
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

  1. 1. Plateforme de développement en PHP5. Zend Framework + Doctrine. Présentation: M. Morel CORNNERY M. Boubacar DOUMBOUYA
  2. 2. Plan <ul><li>Introduction </li></ul><ul><li>Vue globale sur zend Framework </li></ul><ul><li>Présentation Doctrine (Modèle) </li></ul><ul><li>Exemple d’application avec zend et doctrine </li></ul><ul><li>Déploiement </li></ul><ul><li>Démo </li></ul>
  3. 3. Introduction <ul><li>Objectif d’une plateforme de développement? </li></ul><ul><ul><li>Professionnaliser le développement des application web . </li></ul></ul><ul><li>Comment? </li></ul><ul><ul><li>Avec des outils (Framework) </li></ul></ul><ul><ul><ul><li>Une structuration </li></ul></ul></ul><ul><ul><ul><li>Une industrialisation </li></ul></ul></ul><ul><ul><ul><li>Standardisation </li></ul></ul></ul><ul><ul><ul><li>Internationnalisation </li></ul></ul></ul><ul><ul><ul><li>Pérennite </li></ul></ul></ul>
  4. 4. Vue globale sur zend Framework <ul><li>Présentation </li></ul><ul><li>Points forts </li></ul><ul><li>Points faibles </li></ul><ul><li>Composants </li></ul><ul><li>Architectures </li></ul><ul><li>Sécurité </li></ul>
  5. 5. Présentation <ul><li>Framework open-source PHP 5, Oriente Objet, initié par Zend. </li></ul><ul><li>Agé d’un plus de trois (3) ans </li></ul><ul><li>Une communauté très vivante et qualifiée (180 pers) </li></ul><ul><li>Des conventions complètes </li></ul><ul><li>Une documentations en plusieurs langues (30) </li></ul><ul><li>De nombreuses librairies pratiques </li></ul><ul><li>Une architecture de base minimale </li></ul><ul><ul><li>Objectif ? </li></ul></ul><ul><ul><ul><li>Simplifier le développement des grosses applications webs. </li></ul></ul></ul><ul><ul><ul><li>Développer plus vite </li></ul></ul></ul><ul><ul><li>Comment? </li></ul></ul><ul><ul><ul><li>Ajout de nombreux composants (librairies ) + </li></ul></ul></ul><ul><ul><ul><li>Une approche MVC visant a simplifier les taches du développeur </li></ul></ul></ul><ul><ul><ul><li>Améliorer la qualité du code. </li></ul></ul></ul>
  6. 6. Points forts <ul><li>Sa souplesse et sa simplicité </li></ul><ul><li>Ses conventions complètes basées sur PEAR </li></ul><ul><li>La structure et l’étendue de ses librairie </li></ul><ul><li>Son model de développement ouvert </li></ul><ul><li>La confiance et l’engagement des professionnels pour ce projets </li></ul><ul><ul><li>Google, IBM et plusieurs centaines de d’entreprise qui l’utilisent actuellement </li></ul></ul><ul><li>Sa documentation complète </li></ul>
  7. 7. Atouts fonctionnels <ul><li>Documentation </li></ul><ul><li>Configurabilité </li></ul><ul><li>Sécurité </li></ul><ul><li>Aide debugging </li></ul><ul><li>Auto-loading </li></ul><ul><li>Helpers </li></ul><ul><li>Test fonctionnels </li></ul><ul><li>ORM </li></ul><ul><li>I18n/L10n (internationalisation) </li></ul>
  8. 8. Points faibles <ul><li>Pas de système de plugins </li></ul><ul><li>Il faut tout créer soit même lors de la première installation (configuration, bootstrap,…) </li></ul><ul><li>Intégration avec d’autres composants des autres Framework est assez complexe, voir impossible </li></ul>
  9. 9. Architectures <ul><li>48 composants à l’heure actuelle, avec peu d’inter- dépendance </li></ul><ul><ul><li>Noyau (Core) </li></ul></ul><ul><ul><li>Interopérabilité, services web </li></ul></ul><ul><ul><li>Gestion des données </li></ul></ul><ul><ul><li>Internationalisation </li></ul></ul><ul><ul><li>MVC </li></ul></ul>
  10. 10. Architecture de zend Framework
  11. 11. Librairies <ul><li>Zend_Controller </li></ul><ul><li>Zend_Form </li></ul><ul><li>Zend_View </li></ul><ul><li>Zend_Acl </li></ul><ul><li>Zend_Auth </li></ul>
  12. 12. Sécurité <ul><li>Les attaques courantes sur le web: </li></ul><ul><ul><li>XSS, injection SQL, Injection JavaScript, Session et cookies </li></ul></ul><ul><li>Les solution proposées par Zend: </li></ul><ul><ul><li>Zend_Validate </li></ul></ul><ul><ul><li>Zend_Filter </li></ul></ul><ul><ul><li>Zend_Session </li></ul></ul>
  13. 13. Présentation de doctrine <ul><li>Présentation </li></ul><ul><li>Points forts </li></ul><ul><li>Points faibles </li></ul><ul><li>Architectures </li></ul><ul><li>Composants </li></ul>
  14. 14. Présentation <ul><li>Doctrine est une (ORM) pour PHP 5.2.3+ </li></ul><ul><li>Doctrine S'appuie sur PDO et est lui même divisé en deux couches: </li></ul><ul><ul><li>la couche ORM </li></ul></ul><ul><ul><li>la couche DBAL </li></ul></ul><ul><li>Doctrine vient avec son propre langage appelé Doctrine Query Language (DQL), inspiré de Hibernates (HQL). </li></ul><ul><li>Ceci fournit une réelle alternative au SQL basique maintient la flexibilité sans exiger la duplication inutile de code. </li></ul>
  15. 15. Points forts <ul><li>Utilisation de DQL (doctrine query language) qui permet de faciliter très largement l'écriture de requête SQL dîtes complexes </li></ul><ul><li>Le nombre de fonctionnalités relativement important </li></ul><ul><li>Interfaçage avec de nombreuses Bdd (oracle, ibm informix, sqlsever, postgresql, mysql,Firebird,sqlite,…) </li></ul><ul><li>Tutoriels très efficaces et prise en main rapide </li></ul><ul><li>Bonnes améliorations des performances liées à l'utilisation d'active record dans les dernières release </li></ul>
  16. 16. Points faibles <ul><li>Pas de connecteur pour les annuaires comme LDAP </li></ul><ul><li>Communauté pas assez grande </li></ul>
  17. 17. Architecture
  18. 18. composants <ul><li>Doctrine::Manager </li></ul><ul><li>Doctrine::Connection </li></ul><ul><li>Doctrine::Record </li></ul><ul><li>Doctrine::Table </li></ul><ul><li>Doctrine::Collection </li></ul><ul><li>Doctrine::Validator </li></ul><ul><li>Doctrine::View </li></ul>
  19. 19. Architecture d’une application avec Zend Framework et doctrine
  20. 20. 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
  21. 21. Workflow d’une requête avec zend Framework
  22. 22. 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
  23. 23. Workflow d’une requête avec Z-F <ul><li>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. </li></ul><ul><li>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. </li></ul><ul><li>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é. </li></ul><ul><li>La fonction preDispatch() est lancé si elle existe juste avant de lancer l'action : par exemple readAction(...). </li></ul><ul><li>Le contrôleur se termine et la fonction postDispatch() est lancée. </li></ul><ul><li>La réponse est renvoyée au visiteur. </li></ul>
  24. 24. Exemple d’application avec zend et doctrine <ul><li>Organisation de l’application </li></ul><ul><li>Les conventions de nommages </li></ul><ul><li>Notions importantes </li></ul><ul><ul><li>Urls </li></ul></ul><ul><ul><li>Bootsrap </li></ul></ul><ul><ul><li>Configuration </li></ul></ul><ul><ul><li>Controllers </li></ul></ul><ul><ul><li>Vues </li></ul></ul><ul><ul><li>Forms </li></ul></ul><ul><ul><li>Layout </li></ul></ul><ul><ul><li>Models </li></ul></ul>
  25. 25. Organisation de l’application <ul><li>Monapplication </li></ul><ul><ul><li>Application </li></ul></ul><ul><ul><ul><li>Bootsrap.php </li></ul></ul></ul><ul><ul><ul><li>Global.php </li></ul></ul></ul><ul><ul><ul><li>Configuration </li></ul></ul></ul><ul><ul><ul><li>layouts </li></ul></ul></ul><ul><ul><ul><li>Modules </li></ul></ul></ul><ul><ul><ul><ul><li>Referentiel </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Controllers </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Views </li></ul></ul></ul></ul></ul><ul><ul><li>Library </li></ul></ul><ul><ul><ul><li>Zend </li></ul></ul></ul><ul><ul><ul><li>Doctrine </li></ul></ul></ul><ul><ul><ul><li>Ssi </li></ul></ul></ul><ul><ul><ul><li>Forms </li></ul></ul></ul><ul><ul><li>Publics </li></ul></ul>
  26. 26. Convention de nommage <ul><li>#Zend_Db représente un composant que l'on peut aussi appeler package (en référence à Java), </li></ul><ul><li>Matérialisé par le script /library/Zend/Db.php, la classe représentée étant Zend_Db. </li></ul><ul><li>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. </li></ul>
  27. 27. URLs <ul><li>Basic URL routes: </li></ul><ul><li>• /controller/action </li></ul><ul><li>• /controller/action/param/value </li></ul><ul><li>• /module/controller/action </li></ul><ul><li>• /module/controller/action/param/value </li></ul><ul><li>Exemple: </li></ul><ul><li>BASE_URL.'referentiel/branche/'; </li></ul>
  28. 28. Bootstrap (arborescence)
  29. 29. Bootstrap
  30. 30. Bootstrap
  31. 31. Bootstrap(Doctrine)
  32. 32. Bootstrap(Doctrine suite)
  33. 33. configuration
  34. 34. Configuration
  35. 35. Controllers
  36. 36. controller
  37. 37. Action
  38. 38. Forms(arborescence)
  39. 39. Forms (code)
  40. 40. Views (Arborescences)
  41. 41. Views(Formulaire)
  42. 42. Views (Liste)
  43. 43. Layout (arborescence)
  44. 44. Layout(header)
  45. 45. Layout(body)
  46. 46. Model(arborescence)
  47. 47. Model(Base)
  48. 48. Model(Base 2)
  49. 49. Model (méthodes)
  50. 50. Déploiement <ul><li>Environnement de déploiement </li></ul><ul><li>Version PHP 5.2.x </li></ul><ul><li>Modules PHP à activer </li></ul><ul><ul><li>PDO avec les drivers nécessaires </li></ul></ul><ul><ul><li>php_value short_open_tag <? ?> </li></ul></ul><ul><li>Version apache 2.x </li></ul><ul><li>Modules apache a activer </li></ul><ul><ul><li>Mod Rewrite </li></ul></ul>
  51. 51. CONCLUSION
  52. 52. FIN

×