Développer en PHP5 avec Zend Framework

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

1 comments

Comments 1 - 1 of 1 previous next Post a comment

  • + hyoucef hyoucef 2 years ago
    it’s good presentation. congratulation
Post a comment
Embed Video
Edit your comment Cancel

10 Favorites

Développer en PHP5 avec Zend Framework - Presentation Transcript

  1. PHP: développer avec Zend Framework PHP5 : Développer avec Zend Framework 1
  2. PHP: développer avec Zend Framework L'intervenant ● Julien PAULI ● Formateur Anaska (Stand E20) ● Membre AFUP ● Membre club developpez.com ● Certifié PHP5 (ZCE) ● Contributeur Zend Framework ● Fondateur communauté ZF francophone http://www.z-f.fr 2
  3. PHP: développer avec Zend Framework Sommaire A: Introduction D: Modèle MVC 1. Description du projet 6. Approche théorique 2. Les communautés 7. Fichier de configuration et démarrage 8. Exemple de contrôleur 9. Exemple de vue B: Apports du ZendFramework 10. Templating 3. Approche glue par composants 4. Standardisation et règles communes E: Gestion d'une base de données 5. Approche via WebServices 11. Connecteurs 12. Requêter un SGBD C: Exemple authentification 13. Gestion de l'ORM F: Conclusions, questions? 3
  4. PHP: développer avec Zend Framework Sommaire A: Introduction D: Modèle MVC 1. Description du projet 6. Approche théorique 2. Les communautés 7. Fichier de configuration et démarrage 8. Exemple de contrôleur 9. Exemple de vue B: Apports du ZendFramework 10. Templating 3. Approche glue par composants 4. Standardisation et règles communes E: Gestion d'une base de données 5. Approche via WebServices 11. Connecteurs 12. Requêter un SGBD C: Exemple authentification 13. Gestion de l'ORM F: Conclusions, questions? 4
  5. PHP: développer avec Zend Framework Introduction - - - - ● Un cadre de travail 100% PHP5 ● PHP 5.1.4 ● ~150.000 lignes de code ● Projet démarré et publié début 2006 (Mars : v0.1.1) ● Premières écritures Octobre 2005 5
  6. PHP: développer avec Zend Framework Introduction - - - - ● Objectifs : ● Travailler plus vite et plus efficacement ● Favoriser l'adoption de PHP en entreprise ● Favoriser les  « bonnes pratiques » de programmation ● Cesser de réinventer la roue ● Garder un esprit open source omniprésent ● Projet open-source (new BSD licence ), piloté par Zend ● Utilisable gratuitement y compris à des fins commerciales 6
  7. PHP: développer avec Zend Framework Introduction - - - - ● 45 composants fonctionnels à ce jour ● Timeline assez longue ● Règles d'intégration strictes ● Tests par PHPUnit obligatoires ● Centaines de contributeurs à travers le monde ● Dont Zend, Google ou encore IBM 7
  8. PHP: développer avec Zend Framework Introduction - - - - ● Portail et forge complète ● Forum, bugtracker, wiki, canal IRC, dépôt SVN ... ● Manuel clair et complet ● Traduit dans plusieurs langues ● Exemples concrêts, simples et compréhensibles ● Nombreux tutoriaux 8
  9. PHP: développer avec Zend Framework Recherche du terme 'Framework' 9
  10. PHP: développer avec Zend Framework Google impliqué 10
  11. PHP: développer avec Zend Framework Communauté francophone ● Projet libre ● communauté ● En interne ● Et en France ? ● http://www.z-f.fr ● Lancé en Mars 2007 ● Forum ● Projets à venir ● Public technique très majoritaire 11
  12. PHP: développer avec Zend Framework Ils l'utilisent ● toutestprojet.fr ● IBM : qedwiki ● eurommaping.com ● phpwishlist ● z-f.fr ● SurforceCMS ● uSVN.info 12
  13. PHP: développer avec Zend Framework Sommaire A: Introduction D: Modèle MVC 1. Description du projet 6. Approche théorique 2. Les communautés 7. Fichier de configuration et démarrage 8. Exemple de contrôleur 9. Exemple de vue B: Apports du ZendFramework 10. Templating 3. Approche glue par composants 4. Standardisation et règles communes E: Gestion d'une base de données 5. Approche via WebServices 11. Connecteurs 12. Requêter un SGBD C: Exemple authentification 13. Gestion de l'ORM F: Conclusions, questions? 13
  14. PHP: développer avec Zend Framework Une approche « glue » ● Indépendance des composants ● Couplage interne faible ● Similitudes PEAR ● Quelques syntaxes empruntées à Rails / Java ● 'Time To Adopot' libre et graduel ● Flexibilité & étendabilité ● Abstractions omniprésentes ● Interfaces ● Interfaçage avec des composants externes 14
  15. PHP: développer avec Zend Framework Une approche PHP ● Simplicité, esprit PHP conservé et ressenti ● PHP + bonnes pratiques ● UML, design patterns, génie logiciel ● Style de codage – Ligne directrice ● Dont Reapeat Yourself – Dont Reinvent the Wheel ● Modèle MVC présent ● Simple et puissant ● Testabilité 15
  16. PHP: développer avec Zend Framework Des composants pratiques ● Modèle MVC complet ● Composant de base de données très simple ● Table Data Gateway ● ActiveRecord ● Intégration de la technologie de recherche Lucène ● Gestion de l'authentification et des ACL ● Connectivité Javascript / Ajax (JSON) ● Gestion d'emails ● OpenID 16
  17. PHP: développer avec Zend Framework Une approche ouverte vers l'extérieur ● Nombreux connecteurs webServices ● Google ● Youtube ● Picasa ● Docs & Spreadsheets ● Blogger ... ● Yahoo ● Amazon ● Flickr ● Gravatar ● Zend_Rest, Zend_Xmlrpc 17
  18. PHP: développer avec Zend Framework Sommaire 18
  19. PHP: développer avec Zend Framework Sommaire D: Modèle MVC A: Introduction 6. Approche théorique 1. Description du projet 7. Fichier de configuration et démarrage 2. Les communautés 8. Exemple de contrôleur 9. Exemple de vue 10. Templating B: Apports du ZendFramework 3. Approche glue par composants E: Gestion d'une base de données 4. Standardisation et règles communes 11. Connecteurs 5. Approche via WebServices 12. Requêter un SGBD 13. Gestion de l'ORM C: Exemple authentification F: Conclusions, questions? 19
  20. PHP: développer avec Zend Framework Exemple authentification - - - 20
  21. PHP: développer avec Zend Framework Exemple authentification - - - <?php $config = array( 'accept_schemes' => 'basic', 'realm' => 'anaska', ); $adapter = new Zend_Auth_Adapter_Http($config); $basicResolver = new Zend_Auth_Adapter_Http_Resolver_File('auth.txt'); $adapter->setBasicResolver($basicResolver); $adapter->setRequest(new Zend_Controller_Request_Http() ); $adapter->setResponse($response = new Zend_Controller_Response_Http() ); 21
  22. PHP: développer avec Zend Framework Exemple authentification - - - <?php //... $auth = Zend_Auth::getInstance(); // Authentification (et mémorisation en session) $result = $auth->authenticate($adapter)->getIdentity(); // Authentification présente ou réussie ? if ($auth->hasIdentity() || $auth->authenticate($adapter)->isValid()) { $response->setHttpResponseCode(200); $response->appendBody('welcome'); }else{ // echec authentification $response->appendBody('Please, authenticate'); } $response->sendResponse(); 22
  23. PHP: développer avec Zend Framework Sommaire A: Introduction D: Modèle MVC 1. Description du projet 6. Approche théorique 2. Les communautés 7. Fichier de configuration et démarrage 8. Exemple de contrôleur 9. Exemple de vue B: Apports du ZendFramework 10. Templating 3. Approche glue par composants 4. Standardisation et règles communes E: Gestion d'une base de données 5. Approche via WebServices 11. Connecteurs 12. Requêter un SGBD C: Exemple authentification 13. Gestion de l'ORM F: Conclusions, questions? 23
  24. PHP: développer avec Zend Framework Modèle MVC - - - - - - - CONTROLLER VIEW MODEL 24
  25. PHP: développer avec Zend Framework Configuration d'une application [app] db.adapter = pdo_mysql db.params.host = localhost <?php db.params.username = root define('APP_MOD','dev'); // dev ou prod db.params.password = secret db.params.dbname = test // chemin de l'application $appDir = realpath(dirname(dirname(__FILE__))) . '/app'; debug =1 set_include_path($appDir . PATH_SEPARATOR . layout.layout = template get_include_path()); layout.contentKey = contenu // enregistrement de l'autoload [dev : app] require ('Zend/Loader.php'); Zend_Loader::registerAutoload(); [prod : app] db.params.host = my.prod.host // Création de l'objet de configuration db.params.username = user $config = new Zend_Config_Ini($appDir . db.params.password = secretpass '/config/config.ini',APP_MOD); debug =0 logfile = log.txt 25
  26. PHP: développer avec Zend Framework Modèle MVC - - - - - - - ● Routage automatique : ● http://myApp/membres/liste/order/name <?php class MembresController extends Zend_Controller_Action { public function listeAction() { $this->view->order = $this->_getParam('order'); // name } } 26
  27. PHP: développer avec Zend Framework Modèle MVC, fichier de démarrage - - - - - - <?php // ... configuration $frontController = Zend_Controller_Front::getInstance(); $frontController->setParam('db',$db); // passage d'un paramètre dans le système MVC $frontController->throwExceptions(true); Zend_Layout::startMvc($config->layout); // configuration du templating $frontController->setControllerDirectory($appDir . '/controllers'); try{ $frontController->dispatch(); // dispatche ! }catch(Exception $e){ $log->emerg($e->getMessage()); } 27
  28. PHP: développer avec Zend Framework Modèle MVC, un contrôleur - - - - - - - <?php public function indexAction() { $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { $this->_redirect('/'); } $adapter = new Zend_Auth_Adapter_DbTable($someConfig); $adapter->setIdentity($this->_getParam('login')) ->setCredential($this->_getParam('password')); $result = $auth->authenticate($adapter); if (!$result->isValid()) { $this->_flashMessenger('authentification failed'); $this->_forward('error'); return; }else{ Zend_Session::regenerateId(); $this->_redirect('/'); } } 28
  29. PHP: développer avec Zend Framework Modèle MVC, la vue - - - - - - - <?php $request = Zend_Controller_Front::getInstance()->getRequest(); echo $this->doctype('XHTML1_STRICT'), $this->headLink()->appendStylesheet('/styles/basic.css') ->headLink(array('rel' => 'favicon', 'href' => '/img/favicon.ico'), 'PREPEND') ->prependStylesheet('/styles/moz.css', 'screen', true), $this->headMeta()->appendName('keywords', 'framework php solutionslinux') ->appendHttpEquiv('expires', 'Wed, 26 Feb 1997 08:21:57 GMT') ->appendHttpEquiv('pragma', 'no-cache') ->appendHttpEquiv('Cache-Control', 'no-cache'), $this->headScript()->appendFile('/js/prototype.js') ->appendScript($onloadScript), $this->headStyle()->appendStyle($styles), $this->headTitle($request->getActionName()) ->headTitle($request->getControllerName()); // ... 29
  30. PHP: développer avec Zend Framework Modèle MVC, le template - - - - - - - <table border='1' cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" height=\"100%\"> <tr> <td colspan=\"3\" align=\"center\"><?php echo $this->layout()->header ?></td> </tr> <tr> <td width=\"20%\"><?php echo $this->action('gauche','login') ?></td> <td><?php echo $this->layout()->contenu?></td> <td width=\"20%\"><?php echo $this->layout()->droite?></td> </tr> <tr> <td colspan=\"3\" align=\"center\"><?php echo $this->layout()->footer ?></td> </tr> </table> 30
  31. PHP: développer avec Zend Framework Modèle MVC - - - - - - - ● Facultatif ... !? ● Time To Adopt libre ;-) ● Très flexible, très modulaire ● Très personnalisable ● Routeur -> SEO ● Filtres I/O ● Système de Plugins & helpers ● Dérivation de classe simple 31
  32. PHP: développer avec Zend Framework Sommaire A: Introduction D: Modèle MVC 1. Description du projet 6. Approche théorique 2. Les communautés 7. Fichier de configuration et démarrage 8. Exemple de contrôleur 9. Exemple de vue B: Apports du ZendFramework 10. Templating 3. Approche glue par composants 4. Standardisation et règles communes E: Gestion d'une base de données 5. Approche via WebServices 11. Connecteurs 12. Requêter un SGBD C: Exemple authentification 13. Gestion de l'ORM F: Conclusions, questions? 32
  33. PHP: développer avec Zend Framework Base de données, création ● Basé sur PDO majoritairement ● Supporte donc Mysql, Oracle, MSSQL, DB2 ... ● LazyConnect ● Transactions implicites (autocommit) ● Ou manuelles ● Profileur intégré <?php $db = Zend_Db::factory('Pdo_Mysql', array( 'host' => '127.0.0.1', 'username' => 'webuser', 'password' => 'very secret password', 'dbname' => 'solutionslinux' )); 33
  34. PHP: développer avec Zend Framework Base de données, sélections <?php $select = $db->select()->from(array('e'=>'emprunts'),'date') ->join(array('m'=>'membres'),'e.membre=m.num','nom') ->join(array('l'=>'livres'),'e.livre=l.isbn','titre') ->where('m.num > ?',1) ->group('e.date') ->order(array('m.num DESC','e.date ASC')) ->limit(0,10); echo $select; //SELECT `e`.`date`, `m`.`nom`, `l`.`titre` FROM `emprunts` AS `e` INNER JOIN `membres` AS `m` ON e.membre=m.num INNER JOIN `livres` AS `l` ON e.livre=l.isbn WHERE (m.num > 1) GROUP BY `e`.`date` ORDER BY `m`.`num` DESC, `e`.`date` ASC LIMIT 0,10 34
  35. PHP: développer avec Zend Framework Base de données, exemple ORM 35
  36. PHP: développer avec Zend Framework Base de données, définition ORM <?php <?php class Livres extends Zend_Db_Table class Emprunts extends Zend_Db_Table { { protected $_primary = 'isbn'; protected $_primary = array('membre','livre'); protected $_sequence = false; } protected $_referenceMap = array( Clé non autoincrémentée 'livreemprunte' => array( 'columns' => array('livre'), 'refTableClass' => 'Livres', Nom de la table ), 'emprunteur' => array( 'columns' => array('membre'), Clé primaire multiple 'refTableClass' => 'Membres', )); public function findByDate($date) { Liaisons entre tables return $this->fetchAll($this->getAdapter() ->quoteInto('date = ?',$date)); } } 36
  37. PHP: développer avec Zend Framework Base de données, utilisation ORM <?php $Tlivres = new Livres(); $livre = $Tlivres->createRow(); Création d'un objet métier $livre->isbn = '765-1122334455'; $livre->titre = 'Zend Framework en puissance'; $livre->auteur = 'Julien PAULI'; $livre->save(); <?php $Tlivres = new Livres(); $livre = $Tlivres->find('978-2212116762')->current(); Suppression d'un objet métier $livre->delete(); 37
  38. PHP: développer avec Zend Framework Base de données, ORM, relations <?php $Temprunt = new Emprunts(); $emprunts = $Temprunt->findByDate('2007-11-27'); foreach ($emprunts AS $emprunt) { echo \"{$emprunt->findParentLivres()->titre} a été emprunté par {$emprunt->findParentMembres()->nom}\"; } <?php $Tmembre = new Membres; $membre = $Tmembre->find(9)->current(); $livresEcrits = $membre->findLivresViaEmprunts(); ● Saut à travers les tables 38
  39. PHP: développer avec Zend Framework Sommaire A: Introduction D: Modèle MVC 1. Description du projet 6. Approche théorique 2. Les communautés 7. Fichier de configuration et démarrage 8. Exemple de contrôleur 9. Exemple de vue B: Apports du ZendFramework 10. Templating 3. Approche glue par composants 4. Standardisation et règles communes E: Gestion d'une base de données 5. Approche via WebServices 11. Connecteurs 12. Requêter un SGBD C: Exemple authentification 13. Gestion de l'ORM F: Conclusions, questions? 39
  40. PHP: développer avec Zend Framework Conclusions ● Travaillez à votre rythme ● Zend Framework ne vous force en rien ● Couplage lâche ● Composants ● Utilisez le à 100% si vous le désirez ● Mettre en place des pratiques de conception reconnues ● Design Pattern / UML ● Parler la même langue, avec les mêmes outils ● Ne réinventez pas la roue ● Ne vous répétez pas 40
  41. PHP: développer avec Zend Framework Questions 41

+ AlterWayAlterWay, 2 years ago

custom

8347 views, 10 favs, 1 embeds more stats

More info about this document

© All Rights Reserved

Go to text version

  • Total Views 8347
    • 8346 on SlideShare
    • 1 from embeds
  • Comments 1
  • Favorites 10
  • Downloads 0
Most viewed embeds
  • 1 views on http://static.slideshare.net

more

All embeds
  • 1 views on http://static.slideshare.net

less

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

Cancel
File a copyright complaint
Having problems? Go to our helpdesk?

Categories