Zend Framework Alban HANRY
PHP : Souvenir, souvenir <ul><li>< html >< head ></ head >< body > </li></ul><ul><li><?php </li></ul><ul><li>function  que...
Anatomie d’une application PHP Présentation Contrôle de l’a pplication Accès aux données Logique métier Présentation Contr...
Anatomie d’une application PHP index.php3 index.php3 index.php3 index.php
Anatomie d’une application PHP index.php3 index.php3 index.php3 index.php index.php3 index.php3 index.php3 index.php3 inde...
Anatomie d’une application PHP index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 ind...
Anatomie d’une application PHP moderne Présentation Accès aux données Logique métier Contrôle de l’application Something.p...
Un framework ? PHP : Passé et présent <ul><li>Pourquoi utiliser un framework ? </li></ul><ul><li>Le cycle de vie d’une app...
Zend Framework : KEEP IT STUPID SIMPLE  AND POWERFUL Alban HANRY
Zend_Mail : Envoyer un mail PHP : Passé et présent <ul><li>Une API intuitive pour envoyer des mails </li></ul>
Zend_Mail : Pièce jointe PHP : Passé et présent <ul><li>Ajouter une pièce jointe </li></ul>
Zend_Mail : HTML et MIME PHP : Passé et présent <ul><li>MIME : DISPOSITION_INLINE </li></ul>
Zend_Mail : Envoi PHP : Passé et présent <ul><li>Facile !!!=== Simpliste </li></ul>
Zend_Db PHP : Passé et présent <ul><li>Zend_Db : Couche d’abstraction/API </li></ul><ul><li>Utilise les drivers : db2, mys...
Zend_Db PHP : Passé et présent <ul><li>Zend_Db::insert($table,$fields)  </li></ul><ul><li>Vous ne voyez pas un problème ??...
Zend_Db PHP : Passé et présent <ul><li>Zend_Db::select </li></ul>
Zend_Service PHP : Passé et présent
Zend_Service_Aksimet PHP : Passé et présent
Zend Framework : Extensibilité, Réutilisabilité Alban HANRY
MVC : Ah la fameuse Séparation des responsabilités ! PHP : Passé et présent <ul><li>Route </li></ul><ul><ul><li>Route par ...
Dans la vraie vie… Présentation Accès aux données Logique métier Contrôle de l’application Something.phtml Something.phtml...
Zend Framework : MVC extensible PHP : Passé et présent <ul><li>Composition vs Inheritance </li></ul><ul><li>Rester Orthogo...
Zend_Controlleur_Plugin PHP : Passé et présent
Zend_Log : un bon exemple PHP : Passé et présent <ul><li>Framework PHP5, open source </li></ul>
Zend Framework Alban HANRY
En Résumé : une communauté PHP : Passé et présent <ul><li>Framework PHP5, open source </li></ul><ul><li>Class Framework : ...
Zend Framework : More than that … PHP : Passé et présent <ul><li>Zend_Form, Zend_Pdf, Zend_Search, … </li></ul><ul><li>Goo...
Un framework PHP : Passé et présent <ul><li>Ce n’est pas une application. </li></ul><ul><li>Un blog ce n’est pas un CMS ! ...
Software Development LifeCycle PHP : Passé et présent Developpement Assurance Qualité Test Production Maîtriser les fondam...
Zend : Professionnaliser et Industrialiser PHP : Passé et présent <ul><li>ZEev + aNDi = Zend </li></ul><ul><li>Contributeu...
Conclusion Alban HANRY
Choisir un framework ? PHP : Passé et présent Et pourquoi ne pas écrire le sien ?
Choisir un framework ? PHP : Passé et présent Mon framework est   PLUS GROS  que le tien !
Choisir un framework ? PHP : Passé et présent Y a t il un framework pour les réunir tous ?
DON’T BE A GOLLUM !!! PHP : Passé et présent
Call to Action : le week-end approche PHP : Passé et présent <ul><li>Inst all </li></ul><ul><li>http://www.zend.com/fr/pro...
Upcoming SlideShare
Loading in …5
×

[Conférence Frameworks PHP à EPITA] - 19/03/2009 - Présentation Zend Framework

1,489 views
1,451 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,489
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • HG
  • [Conférence Frameworks PHP à EPITA] - 19/03/2009 - Présentation Zend Framework

    1. 1. Zend Framework Alban HANRY
    2. 2. PHP : Souvenir, souvenir <ul><li>< html >< head ></ head >< body > </li></ul><ul><li><?php </li></ul><ul><li>function questionp( $input ) { </li></ul><ul><li>return strrpos ( $input , '?' ) === strlen ( $input ) - 1 ; </li></ul><ul><li>} </li></ul><ul><li>?><?php if (! isset ( $_POST [ 'submit' ] )) { </li></ul><ul><li>// if the &quot;submit&quot; variable does not exist the form has not been submitted, so display form </li></ul><ul><li>?> < form action =&quot; <?php echo $_SERVER [ 'PHP_SELF' ]; ?>&quot; method = &quot;post&quot; > </li></ul><ul><li>Enter your question: < input name = &quot;question&quot; size = &quot;50&quot; > </li></ul><ul><li>< input type = &quot;submit&quot; name = &quot;submit&quot; value = &quot;Ask&quot; > </li></ul><ul><li></ form > </li></ul><ul><li><?php } else { </li></ul><ul><li>// if the &quot;submit&quot; variable exists the form has been submitted, so look for and process form data, </li></ul><ul><li>// displaying the result </li></ul><ul><li>if (questionp( $_POST [ 'question' ])) { </li></ul><ul><li>if (rand( 0 , 1 )): echo 'yes' ; else : echo 'no' ; endif ; </li></ul><ul><li>} else { </li></ul><ul><li>echo 'Don't you know what a question is?' ; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>?> </ body ></ html > </li></ul>PHP : Passé et présent
    3. 3. Anatomie d’une application PHP Présentation Contrôle de l’a pplication Accès aux données Logique métier Présentation Contrôle de l’application Logique métier Présentation PHP : Passé et présent
    4. 4. Anatomie d’une application PHP index.php3 index.php3 index.php3 index.php
    5. 5. Anatomie d’une application PHP index.php3 index.php3 index.php3 index.php index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php
    6. 6. Anatomie d’une application PHP index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3 index.php3
    7. 7. Anatomie d’une application PHP moderne Présentation Accès aux données Logique métier Contrôle de l’application Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php PHP : Passé et présent
    8. 8. Un framework ? PHP : Passé et présent <ul><li>Pourquoi utiliser un framework ? </li></ul><ul><li>Le cycle de vie d’une application…dans la vraie vie </li></ul><ul><ul><li>Toujours en retard pour la livraison => vite ! </li></ul></ul><ul><ul><li>Les fonctionnalités changent => modulaire ! </li></ul></ul><ul><ul><li>Et puis l’application montent en charge => performance ! </li></ul></ul><ul><ul><li>Puis les bugs arrivent => maintenance ! </li></ul></ul><ul><ul><li>Et finalement la v2 arrivent => et ca recommence ! </li></ul></ul><ul><li>Ne pas réinventer la roue, être productif </li></ul><ul><li>Avoir des standards transversaux aux projets </li></ul><ul><li>DRY : Don’t Repeat Yourself </li></ul><ul><li>KISS : Keep It Stupid Simple </li></ul>
    9. 9. Zend Framework : KEEP IT STUPID SIMPLE AND POWERFUL Alban HANRY
    10. 10. Zend_Mail : Envoyer un mail PHP : Passé et présent <ul><li>Une API intuitive pour envoyer des mails </li></ul>
    11. 11. Zend_Mail : Pièce jointe PHP : Passé et présent <ul><li>Ajouter une pièce jointe </li></ul>
    12. 12. Zend_Mail : HTML et MIME PHP : Passé et présent <ul><li>MIME : DISPOSITION_INLINE </li></ul>
    13. 13. Zend_Mail : Envoi PHP : Passé et présent <ul><li>Facile !!!=== Simpliste </li></ul>
    14. 14. Zend_Db PHP : Passé et présent <ul><li>Zend_Db : Couche d’abstraction/API </li></ul><ul><li>Utilise les drivers : db2, mysqli, oci, pdo_* </li></ul>
    15. 15. Zend_Db PHP : Passé et présent <ul><li>Zend_Db::insert($table,$fields) </li></ul><ul><li>Vous ne voyez pas un problème ??? !!! </li></ul>
    16. 16. Zend_Db PHP : Passé et présent <ul><li>Zend_Db::select </li></ul>
    17. 17. Zend_Service PHP : Passé et présent
    18. 18. Zend_Service_Aksimet PHP : Passé et présent
    19. 19. Zend Framework : Extensibilité, Réutilisabilité Alban HANRY
    20. 20. MVC : Ah la fameuse Séparation des responsabilités ! PHP : Passé et présent <ul><li>Route </li></ul><ul><ul><li>Route par defaut : /[module]/[controller]/[action] </li></ul></ul><ul><ul><li>http://monappli/index/index == http://monappli/ </li></ul></ul><ul><li>Controlleur : Class extends Zend_Controller_Action </li></ul><ul><ul><li>Un nom ! </li></ul></ul><ul><li>Action : méthode [nom]Action dans la classe </li></ul><ul><ul><li>Un verbe ! </li></ul></ul><ul><li>Vue : un fichier [action].phtml dans le répertoire scripts/[controlleur] </li></ul><ul><li>ErrorController : catch les controller/action non trouvés ou les exceptions lancées </li></ul>
    21. 21. Dans la vraie vie… Présentation Accès aux données Logique métier Contrôle de l’application Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php PHP : Passé et présent index.php3 index.php index.php3 index.php index.php3 index.php index.php3 index.php index.php3 index.php index.php3 index.php index.php3 index.php index.php3 index.php index.php3 index.php index.php3 index.php3 index.php
    22. 22. Zend Framework : MVC extensible PHP : Passé et présent <ul><li>Composition vs Inheritance </li></ul><ul><li>Rester Orthogonal et favoriser la flexibilité et la réutilisabilité </li></ul><ul><li>Le controller frontal définit des “hooks” à chaque étape du dispatching : ne pas dériver le Dispatcher </li></ul><ul><li>Helper d’Action : rajouter des fonctionnalités sans dériver Zend_Controller_Action </li></ul><ul><li>Helper de Vues : rajouter des fonctionnalités (escape your output) sans dériver Zend_View </li></ul>
    23. 23. Zend_Controlleur_Plugin PHP : Passé et présent
    24. 24. Zend_Log : un bon exemple PHP : Passé et présent <ul><li>Framework PHP5, open source </li></ul>
    25. 25. Zend Framework Alban HANRY
    26. 26. En Résumé : une communauté PHP : Passé et présent <ul><li>Framework PHP5, open source </li></ul><ul><li>Class Framework : Fully OO </li></ul><ul><li>80/20 : le cas fréquent est TRES simple </li></ul><ul><li>La simplicité et l’extensibilité permette d’implémenter les 20% restants sans tordre le framework </li></ul><ul><li>“ Use at will” </li></ul><ul><li>Couplage faible entre les composants MVC et les autres pour fournir une infrastructure par défaut </li></ul><ul><li>Licence BSD-style et CLA pour les contributeurs </li></ul><ul><li>Tests unitaires : code coverage > 80% </li></ul><ul><li>Documentation plusieurs langues </li></ul><ul><li>Backward compatible Bug Fixe Release (Often!) </li></ul>
    27. 27. Zend Framework : More than that … PHP : Passé et présent <ul><li>Zend_Form, Zend_Pdf, Zend_Search, … </li></ul><ul><li>Google : Zend_GData </li></ul><ul><li>Microsoft: Zend_InfoCard </li></ul><ul><li>Adobe : Zend_Amf </li></ul><ul><li>Zend_JSON et Zend_JSON_Server (json-rpc) </li></ul><ul><li>Dojo integré par défaut </li></ul><ul><li>La communauté : ZendX_JQuery, ZendX_Console_Process_Unix </li></ul>
    28. 28. Un framework PHP : Passé et présent <ul><li>Ce n’est pas une application. </li></ul><ul><li>Un blog ce n’est pas un CMS ! (Wordpress != SPIP) </li></ul><ul><li>Un CMS ce n’est pas un Framework ! </li></ul><ul><li>Un Framework ce n’est pas un générateur d’application </li></ul><ul><li>« Ce n’est pas non plus la réponse à tout ! » </li></ul><ul><li>ZF propose un socle technique sur lequel vous pouvez construire votre « framework » ou votre couche « technico-fonctionnel » </li></ul><ul><li>Exemple Magento </li></ul>
    29. 29. Software Development LifeCycle PHP : Passé et présent Developpement Assurance Qualité Test Production Maîtriser les fondamentaux Maintenance proactive Recette et validations Retours / Améliorations Supervision continue
    30. 30. Zend : Professionnaliser et Industrialiser PHP : Passé et présent <ul><li>ZEev + aNDi = Zend </li></ul><ul><li>Contributeur sur 3 communauté open source </li></ul><ul><ul><li>PHP et Zend Engine, Eclipse PDT, Zend Framework </li></ul></ul><ul><li>Offre commerciale pour répondre aux problématiques d’entreprise </li></ul><ul><ul><li>Support PHP, Support Zend Framework </li></ul></ul><ul><ul><li>IDE : Zend Studio : Perspective ZF, Tests Unitaire, Complétion avancée </li></ul></ul><ul><ul><li>Serveur d’application : Monitoring applicatif, Session Clustering </li></ul></ul><ul><ul><li>Formation et Certification : PHP et ZF </li></ul></ul>
    31. 31. Conclusion Alban HANRY
    32. 32. Choisir un framework ? PHP : Passé et présent Et pourquoi ne pas écrire le sien ?
    33. 33. Choisir un framework ? PHP : Passé et présent Mon framework est PLUS GROS que le tien !
    34. 34. Choisir un framework ? PHP : Passé et présent Y a t il un framework pour les réunir tous ?
    35. 35. DON’T BE A GOLLUM !!! PHP : Passé et présent
    36. 36. Call to Action : le week-end approche PHP : Passé et présent <ul><li>Inst all </li></ul><ul><li>http://www.zend.com/fr/products/server/download </li></ul><ul><li>Zend Server Community Edition </li></ul><ul><ul><li>APC compatible, MSI Installer, .deb, .rpm, production </li></ul></ul><ul><li>Learn </li></ul><ul><li>http://framework.zend.com/manual/ </li></ul><ul><li>Contribute </li></ul><ul><li>http://framework.zend.com/wiki </li></ul>

    ×