SlideShare uma empresa Scribd logo
1 de 31
avec


  Zend Framework
      Trouver le chemin des bonnes pratiques

             Webinar Zend Technologies
                 25 Octobre 2011
Gauthier Delamarre, Professional Services Manager pour VA Consulting -
                         www.vaconsulting.lu
Vous avez dit Zend Framework ?




                                 2
Donc, vous avez dit framework...
‣ Ce qu’est un framework
  - un ensemble de composants
  - ... et de bonnes pratiques
  - ... ainsi que de standards (nommage et codage)
‣ Ce que n’est pas un framework
  - un atelier de développement rapide (RAD)
  - un générateur de code


                                                     3
et Zend Framework ?
‣ Objet
 - le code de Zend Framework est 100% objet
‣ Technologie
 - Zend Framework exploite le meilleur de PHP
‣ Souplesse
 - les liens entre les composants sont faibles
‣ Communauté
 - très importante, encadrée, milieu industriel

                                                  4
Choisir Zend Framework
‣ Raisons internes
  - historique
  - compétences pré-existantes
  - besoins du projet
‣ Raisons externes
  - ressources disponibles
    - formation
    - accompagnement


                                 5
Avant de démarrer un projet...




                                 6
Adopter le bon état d’esprit
‣ Un framework est un outil, pas un
  concurrent
  - ne pas s’interroger sur la pertinence des
      composants une fois le framework choisi
‣ Se concentrer sur le métier
  - la valeur ajoutée d’un projet est portée par la
      logique métier
  -   l’architecture, qui n’a aucune valeur ajoutée,
      est confiée au framework


                                                       7
Se mettre à niveau
‣ S’assurer de maîtriser les pré-requis
  techniques
  - particulièrement l’OOP
    - interfaces
    - classes abstraites
‣ Acquérir une bonne maîtrise du framework
  - connaître les composants existants
  - connaître les standards applicables
‣ Dans les deux cas, il faut souvent se former

                                                 8
Premiers pas avec ZF




                       9
Choisir l’arborescence du projet
‣ Mode simple
  - MVC unique
  - peut être généré par Zend_Tool
  - réservé aux projets modestes
‣ Architecture modulaire
  - MVC multiple
    - une arborescence MVC par module
  - adaptée aux projets plus vastes
  - facilite la réutilisabilité
                                        10
En parlant de réutilisabilité
‣ ZF offre différents mécanismes de plugins
  - helpers de vues et d’actions
  - plugin de front controller
  - form elements, decorators...
‣ Distinguer les plugins génériques des plugins
  métiers
  - créer un dépôt global pour les génériques
  - ... et un autre dans l’arborescence du projet
    pour les plugins liés au métier

                                                    11
Définition des standards
‣ Les standards de nommage et de codage
  garantissent la lisibilité du code
 - leur respect facilite la prise en main du projet
     par un tiers : consultant, nouveau collaborateur
‣ ZF applique lui-même certain de ces
  standards
 - il est plus simple de s’y conformer (et parfois
     obligatoire)
 -   les utiliser facilite également l’intervention d’un
     tiers
                                                           12
Bonnes pratiques «illustrées»




                                13
Controllers




              14
Controllers
‣ Bonne pratique
 - les contrôleurs ne doivent contenir que des
   méthodes d’actions




                                                 14
Controllers
‣ Bonne pratique
 - les contrôleurs ne doivent contenir que des
     méthodes d’actions
‣ Raisons
 - créer une méthode dans un contrôleur limite
     son utilisation à ce seul contrôleur
 -   interdit toute réutilisation de cette méthode
     dans un autre projet



                                                     14
Controllers
‣ Bonne pratique
 - les contrôleurs ne doivent contenir que des
     méthodes d’actions
‣ Raisons
 - créer une méthode dans un contrôleur limite
     son utilisation à ce seul contrôleur
 -   interdit toute réutilisation de cette méthode
     dans un autre projet
‣ Implémentation
 - créer des actions helpers
                                                     14
Models




         15
Models
‣ Bonne pratique
 - ne pas mélanger la logique métier et l’accès
   aux données




                                                  15
Models
‣ Bonne pratique
 - ne pas mélanger la logique métier et l’accès
     aux données
‣ Raisons
 - les objets métiers qui accèdent aux données
     ne peuvent pas être testés unitairement
 -   changer de couche d’accès aux données peut
     s’avérer très compliqué



                                                  15
Models
‣ Bonne pratique
 - ne pas mélanger la logique métier et l’accès
     aux données
‣ Raisons
 - les objets métiers qui accèdent aux données
     ne peuvent pas être testés unitairement
 -   changer de couche d’accès aux données peut
     s’avérer très compliqué
‣ Implémentation
 - scinder les modèles entre métier et données
                                                  15
Views




        16
Views
‣ Bonne pratique
 - ne pas créer de dépendances entre vues et
   objets métiers




                                               16
Views
‣ Bonne pratique
 - ne pas créer de dépendances entre vues et
     objets métiers
‣ Raisons
 - une telle dépendance empêche de paralléliser
     les tâches
 -   une modification de l’objet métier implique un
     contrôle de toute les vues qui l’utilisent



                                                     16
Views
‣ Bonne pratique
 - ne pas créer de dépendances entre vues et
     objets métiers
‣ Raisons
 - une telle dépendance empêche de paralléliser
     les tâches
 -   une modification de l’objet métier implique un
     contrôle de toute les vues qui l’utilisent
‣ Implémentation
 - passer des tableaux de données aux vues
                                                     16
Formulaires




              17
Formulaires
‣ Bonnes pratique
 - utiliser à 100% le mécanisme de rendu HTML
   des formulaires (via les décorateurs)




                                                17
Formulaires
‣ Bonnes pratique
 - utiliser à 100% le mécanisme de rendu HTML
     des formulaires (via les décorateurs)
‣ Raisons
 - l’affichage d’un formulaire est dépendant de
     son état - les décorateurs en tiennent compte
     automatiquement
 -   conserve la souplesse du système de plugins



                                                     17
Formulaires
‣ Bonnes pratique
 - utiliser à 100% le mécanisme de rendu HTML
     des formulaires (via les décorateurs)
‣ Raisons
 - l’affichage d’un formulaire est dépendant de
     son état - les décorateurs en tiennent compte
     automatiquement
 -   conserve la souplesse du système de plugins
‣ Implémentation
 - echo $this->form; dans les vues !
                                                     17
Conclusion / Questions




                         18
Merci de votre participation !




                                 19

Mais conteúdo relacionado

Mais procurados

Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido SOAT
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSRenaud Dumont
 
Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015Benjamin Lampérier
 
Introduction à CakePHP
Introduction à CakePHPIntroduction à CakePHP
Introduction à CakePHPPierre MARTIN
 
MVVM par Karim PIerre Maalej
MVVM par Karim PIerre MaalejMVVM par Karim PIerre Maalej
MVVM par Karim PIerre MaalejCocoaHeads France
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSOAT
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Yves-Emmanuel Jutard
 
ASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marcheASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marcheMicrosoft
 
Google : Prise en charge de l'Ajax et de l'Angular JS
Google : Prise en charge de l'Ajax et de l'Angular JSGoogle : Prise en charge de l'Ajax et de l'Angular JS
Google : Prise en charge de l'Ajax et de l'Angular JSPeak Ace
 
Entity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkEntity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkMicrosoft
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIHugo Hamon
 
Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)Clément Dubois
 
ASP.NET MVC 5 et Web API 2
ASP.NET MVC 5 et Web API 2ASP.NET MVC 5 et Web API 2
ASP.NET MVC 5 et Web API 2Microsoft
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 
Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Eric D.
 
Mythes et réalités des projets Web (Webschool tours)
Mythes et réalités des projets Web (Webschool tours)Mythes et réalités des projets Web (Webschool tours)
Mythes et réalités des projets Web (Webschool tours)TribuAndCo
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsOCTO Technology
 

Mais procurados (20)

Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015
 
Introduction à CakePHP
Introduction à CakePHPIntroduction à CakePHP
Introduction à CakePHP
 
MVVM par Karim PIerre Maalej
MVVM par Karim PIerre MaalejMVVM par Karim PIerre Maalej
MVVM par Karim PIerre Maalej
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVC
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014
 
ASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marcheASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marche
 
Google : Prise en charge de l'Ajax et de l'Angular JS
Google : Prise en charge de l'Ajax et de l'Angular JSGoogle : Prise en charge de l'Ajax et de l'Angular JS
Google : Prise en charge de l'Ajax et de l'Angular JS
 
Entity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkEntity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity Framework
 
Symposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec MicrosoftSymposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec Microsoft
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)
 
ASP.NET MVC 5 et Web API 2
ASP.NET MVC 5 et Web API 2ASP.NET MVC 5 et Web API 2
ASP.NET MVC 5 et Web API 2
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006
 
Initiation à ASP.NET 4.0
Initiation à ASP.NET 4.0Initiation à ASP.NET 4.0
Initiation à ASP.NET 4.0
 
Mythes et réalités des projets Web (Webschool tours)
Mythes et réalités des projets Web (Webschool tours)Mythes et réalités des projets Web (Webschool tours)
Mythes et réalités des projets Web (Webschool tours)
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
 
JavaFX et le JDK9
JavaFX et le JDK9JavaFX et le JDK9
JavaFX et le JDK9
 

Destaque

La Poste - rapport annuel 2010
La Poste - rapport annuel 2010La Poste - rapport annuel 2010
La Poste - rapport annuel 2010Silicon Village
 
Comment valoriser l’offre de plantes vertes pour 2015 ?
Comment valoriser l’offre de plantes vertes pour 2015 ? Comment valoriser l’offre de plantes vertes pour 2015 ?
Comment valoriser l’offre de plantes vertes pour 2015 ? BHR
 
2014 04 j1 fongecifonline_itg_j_vds
2014 04 j1 fongecifonline_itg_j_vds2014 04 j1 fongecifonline_itg_j_vds
2014 04 j1 fongecifonline_itg_j_vdsJean Vanderspelden
 
2013 04 mt impacts du numérique cibc itg.ppt
2013 04 mt impacts du numérique cibc itg.ppt2013 04 mt impacts du numérique cibc itg.ppt
2013 04 mt impacts du numérique cibc itg.pptJean Vanderspelden
 
Sky Poke Startup Academy
Sky Poke Startup AcademySky Poke Startup Academy
Sky Poke Startup AcademyStartup Academy
 
201106 JW ACCORTise Barcamp Eghezée Contenu web pertinent
201106 JW ACCORTise Barcamp Eghezée Contenu web pertinent201106 JW ACCORTise Barcamp Eghezée Contenu web pertinent
201106 JW ACCORTise Barcamp Eghezée Contenu web pertinentMarina Aubert
 
Fiori
FioriFiori
Fioriaiosa
 
Comment tirer de la connaissance marché des recherches google
Comment tirer de la connaissance marché des recherches googleComment tirer de la connaissance marché des recherches google
Comment tirer de la connaissance marché des recherches googleClustaar
 

Destaque (12)

La Poste - rapport annuel 2010
La Poste - rapport annuel 2010La Poste - rapport annuel 2010
La Poste - rapport annuel 2010
 
Comment valoriser l’offre de plantes vertes pour 2015 ?
Comment valoriser l’offre de plantes vertes pour 2015 ? Comment valoriser l’offre de plantes vertes pour 2015 ?
Comment valoriser l’offre de plantes vertes pour 2015 ?
 
2014 04 j1 fongecifonline_itg_j_vds
2014 04 j1 fongecifonline_itg_j_vds2014 04 j1 fongecifonline_itg_j_vds
2014 04 j1 fongecifonline_itg_j_vds
 
2013 04 mt impacts du numérique cibc itg.ppt
2013 04 mt impacts du numérique cibc itg.ppt2013 04 mt impacts du numérique cibc itg.ppt
2013 04 mt impacts du numérique cibc itg.ppt
 
Presentation Freskpage
Presentation FreskpagePresentation Freskpage
Presentation Freskpage
 
Sky Poke Startup Academy
Sky Poke Startup AcademySky Poke Startup Academy
Sky Poke Startup Academy
 
201106 JW ACCORTise Barcamp Eghezée Contenu web pertinent
201106 JW ACCORTise Barcamp Eghezée Contenu web pertinent201106 JW ACCORTise Barcamp Eghezée Contenu web pertinent
201106 JW ACCORTise Barcamp Eghezée Contenu web pertinent
 
Laissez votre marque
Laissez votre marqueLaissez votre marque
Laissez votre marque
 
Fiori
FioriFiori
Fiori
 
1 manual general_de_adquisiciones
1 manual general_de_adquisiciones1 manual general_de_adquisiciones
1 manual general_de_adquisiciones
 
Comment tirer de la connaissance marché des recherches google
Comment tirer de la connaissance marché des recherches googleComment tirer de la connaissance marché des recherches google
Comment tirer de la connaissance marché des recherches google
 
Recherche d'appart
Recherche d'appartRecherche d'appart
Recherche d'appart
 

Semelhante a Trouver le chemin des bonnes pratiques

Une application sans framework en 2019
Une application sans framework en 2019Une application sans framework en 2019
Une application sans framework en 2019Rodrigue Villetard
 
Presentation of summer Internship (présentation stage d\'été)
Presentation of summer Internship (présentation stage d\'été)Presentation of summer Internship (présentation stage d\'été)
Presentation of summer Internship (présentation stage d\'été)oxygen999
 
Introduction aux méthodes agiles
Introduction aux méthodes agilesIntroduction aux méthodes agiles
Introduction aux méthodes agilesGuillaume Collic
 
Objecteering mdday2010
Objecteering mdday2010Objecteering mdday2010
Objecteering mdday2010MD DAY
 
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...IHM'10
 
Dans quel contexte employer Zend ou Drupal
Dans quel contexte employer Zend ou DrupalDans quel contexte employer Zend ou Drupal
Dans quel contexte employer Zend ou Drupalneuros
 
Drupal un projet comme les autres ? Drupalcamp Paris 2013
Drupal un projet comme les autres ? Drupalcamp Paris 2013Drupal un projet comme les autres ? Drupalcamp Paris 2013
Drupal un projet comme les autres ? Drupalcamp Paris 2013Artusamak
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Microsoft Technet France
 
Agile Tour 2012 Paris - Nouveaux Outils Agile MS
Agile Tour 2012 Paris - Nouveaux Outils Agile MS Agile Tour 2012 Paris - Nouveaux Outils Agile MS
Agile Tour 2012 Paris - Nouveaux Outils Agile MS Cédric Leblond
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPJean-Marc Fontaine
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesLilia Sfaxi
 
Drupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalDrupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalCore-Techs
 
#1 cloud-infra-talk- l ops-du-devops
#1 cloud-infra-talk- l ops-du-devops#1 cloud-infra-talk- l ops-du-devops
#1 cloud-infra-talk- l ops-du-devopsEmmanuel Roldan
 
Think tank présentation
Think tank   présentationThink tank   présentation
Think tank présentationJacky Galicher
 
Programmation Web developpement dynamique
Programmation Web developpement dynamiqueProgrammation Web developpement dynamique
Programmation Web developpement dynamiqueYounesOuladSayad1
 

Semelhante a Trouver le chemin des bonnes pratiques (20)

Introducthion mvvm avec wpf
Introducthion mvvm avec wpfIntroducthion mvvm avec wpf
Introducthion mvvm avec wpf
 
Formation Agile Scrum
Formation Agile ScrumFormation Agile Scrum
Formation Agile Scrum
 
Une application sans framework en 2019
Une application sans framework en 2019Une application sans framework en 2019
Une application sans framework en 2019
 
Presentation of summer Internship (présentation stage d\'été)
Presentation of summer Internship (présentation stage d\'été)Presentation of summer Internship (présentation stage d\'été)
Presentation of summer Internship (présentation stage d\'été)
 
Introduction aux méthodes agiles
Introduction aux méthodes agilesIntroduction aux méthodes agiles
Introduction aux méthodes agiles
 
Objecteering mdday2010
Objecteering mdday2010Objecteering mdday2010
Objecteering mdday2010
 
Les framework mvc
Les framework mvcLes framework mvc
Les framework mvc
 
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
 
Dans quel contexte employer Zend ou Drupal
Dans quel contexte employer Zend ou DrupalDans quel contexte employer Zend ou Drupal
Dans quel contexte employer Zend ou Drupal
 
Drupal un projet comme les autres ? Drupalcamp Paris 2013
Drupal un projet comme les autres ? Drupalcamp Paris 2013Drupal un projet comme les autres ? Drupalcamp Paris 2013
Drupal un projet comme les autres ? Drupalcamp Paris 2013
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
 
Agile Tour 2012 Paris - Nouveaux Outils Agile MS
Agile Tour 2012 Paris - Nouveaux Outils Agile MS Agile Tour 2012 Paris - Nouveaux Outils Agile MS
Agile Tour 2012 Paris - Nouveaux Outils Agile MS
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHP
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
 
Drupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalDrupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet Drupal
 
#1 cloud-infra-talk- l ops-du-devops
#1 cloud-infra-talk- l ops-du-devops#1 cloud-infra-talk- l ops-du-devops
#1 cloud-infra-talk- l ops-du-devops
 
Think tank présentation
Think tank   présentationThink tank   présentation
Think tank présentation
 
WPF MVVM
WPF MVVMWPF MVVM
WPF MVVM
 
Programmation Web developpement dynamique
Programmation Web developpement dynamiqueProgrammation Web developpement dynamique
Programmation Web developpement dynamique
 

Trouver le chemin des bonnes pratiques

  • 1. avec Zend Framework Trouver le chemin des bonnes pratiques Webinar Zend Technologies 25 Octobre 2011 Gauthier Delamarre, Professional Services Manager pour VA Consulting - www.vaconsulting.lu
  • 2. Vous avez dit Zend Framework ? 2
  • 3. Donc, vous avez dit framework... ‣ Ce qu’est un framework - un ensemble de composants - ... et de bonnes pratiques - ... ainsi que de standards (nommage et codage) ‣ Ce que n’est pas un framework - un atelier de développement rapide (RAD) - un générateur de code 3
  • 4. et Zend Framework ? ‣ Objet - le code de Zend Framework est 100% objet ‣ Technologie - Zend Framework exploite le meilleur de PHP ‣ Souplesse - les liens entre les composants sont faibles ‣ Communauté - très importante, encadrée, milieu industriel 4
  • 5. Choisir Zend Framework ‣ Raisons internes - historique - compétences pré-existantes - besoins du projet ‣ Raisons externes - ressources disponibles - formation - accompagnement 5
  • 6. Avant de démarrer un projet... 6
  • 7. Adopter le bon état d’esprit ‣ Un framework est un outil, pas un concurrent - ne pas s’interroger sur la pertinence des composants une fois le framework choisi ‣ Se concentrer sur le métier - la valeur ajoutée d’un projet est portée par la logique métier - l’architecture, qui n’a aucune valeur ajoutée, est confiée au framework 7
  • 8. Se mettre à niveau ‣ S’assurer de maîtriser les pré-requis techniques - particulièrement l’OOP - interfaces - classes abstraites ‣ Acquérir une bonne maîtrise du framework - connaître les composants existants - connaître les standards applicables ‣ Dans les deux cas, il faut souvent se former 8
  • 10. Choisir l’arborescence du projet ‣ Mode simple - MVC unique - peut être généré par Zend_Tool - réservé aux projets modestes ‣ Architecture modulaire - MVC multiple - une arborescence MVC par module - adaptée aux projets plus vastes - facilite la réutilisabilité 10
  • 11. En parlant de réutilisabilité ‣ ZF offre différents mécanismes de plugins - helpers de vues et d’actions - plugin de front controller - form elements, decorators... ‣ Distinguer les plugins génériques des plugins métiers - créer un dépôt global pour les génériques - ... et un autre dans l’arborescence du projet pour les plugins liés au métier 11
  • 12. Définition des standards ‣ Les standards de nommage et de codage garantissent la lisibilité du code - leur respect facilite la prise en main du projet par un tiers : consultant, nouveau collaborateur ‣ ZF applique lui-même certain de ces standards - il est plus simple de s’y conformer (et parfois obligatoire) - les utiliser facilite également l’intervention d’un tiers 12
  • 15. Controllers ‣ Bonne pratique - les contrôleurs ne doivent contenir que des méthodes d’actions 14
  • 16. Controllers ‣ Bonne pratique - les contrôleurs ne doivent contenir que des méthodes d’actions ‣ Raisons - créer une méthode dans un contrôleur limite son utilisation à ce seul contrôleur - interdit toute réutilisation de cette méthode dans un autre projet 14
  • 17. Controllers ‣ Bonne pratique - les contrôleurs ne doivent contenir que des méthodes d’actions ‣ Raisons - créer une méthode dans un contrôleur limite son utilisation à ce seul contrôleur - interdit toute réutilisation de cette méthode dans un autre projet ‣ Implémentation - créer des actions helpers 14
  • 18. Models 15
  • 19. Models ‣ Bonne pratique - ne pas mélanger la logique métier et l’accès aux données 15
  • 20. Models ‣ Bonne pratique - ne pas mélanger la logique métier et l’accès aux données ‣ Raisons - les objets métiers qui accèdent aux données ne peuvent pas être testés unitairement - changer de couche d’accès aux données peut s’avérer très compliqué 15
  • 21. Models ‣ Bonne pratique - ne pas mélanger la logique métier et l’accès aux données ‣ Raisons - les objets métiers qui accèdent aux données ne peuvent pas être testés unitairement - changer de couche d’accès aux données peut s’avérer très compliqué ‣ Implémentation - scinder les modèles entre métier et données 15
  • 22. Views 16
  • 23. Views ‣ Bonne pratique - ne pas créer de dépendances entre vues et objets métiers 16
  • 24. Views ‣ Bonne pratique - ne pas créer de dépendances entre vues et objets métiers ‣ Raisons - une telle dépendance empêche de paralléliser les tâches - une modification de l’objet métier implique un contrôle de toute les vues qui l’utilisent 16
  • 25. Views ‣ Bonne pratique - ne pas créer de dépendances entre vues et objets métiers ‣ Raisons - une telle dépendance empêche de paralléliser les tâches - une modification de l’objet métier implique un contrôle de toute les vues qui l’utilisent ‣ Implémentation - passer des tableaux de données aux vues 16
  • 27. Formulaires ‣ Bonnes pratique - utiliser à 100% le mécanisme de rendu HTML des formulaires (via les décorateurs) 17
  • 28. Formulaires ‣ Bonnes pratique - utiliser à 100% le mécanisme de rendu HTML des formulaires (via les décorateurs) ‣ Raisons - l’affichage d’un formulaire est dépendant de son état - les décorateurs en tiennent compte automatiquement - conserve la souplesse du système de plugins 17
  • 29. Formulaires ‣ Bonnes pratique - utiliser à 100% le mécanisme de rendu HTML des formulaires (via les décorateurs) ‣ Raisons - l’affichage d’un formulaire est dépendant de son état - les décorateurs en tiennent compte automatiquement - conserve la souplesse du système de plugins ‣ Implémentation - echo $this->form; dans les vues ! 17
  • 31. Merci de votre participation ! 19

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n