Soutenance Vincent Composieux
About Epixelic <ul><li>10 employees : </li></ul><ul><li>3 directors </li></ul><ul><li>4 web developers </li></ul><ul><li>1...
Environnement de travail <ul><li>Découverte de Zend Framework </li></ul><ul><li>Framework jQuery </li></ul><ul><li>Outils ...
Bug tracking : Flyspray
Projets sur lesquels j’ai travaillé <ul><li>My-Annonce : </li></ul><ul><li>Basé sur Zend Framework </li></ul><ul><li>Servi...
Introduction aux frameworks PHP <ul><li>2 principaux frameworks : </li></ul><ul><li>Zend Framework </li></ul><ul><li>Symfo...
Pourquoi ? <ul><li>Zend Framework : </li></ul><ul><li>Beaucoup de composants </li></ul><ul><li>Framework officiel de Zend,...
Le modèle MVC
Mapping objet-relationnel Objets Base de données <ul><li>Abstraction de la base de données : </li></ul><ul><li>Plus de req...
Mise en place d’un projet <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot &quot;/var/www/monprojet&quot; S...
Mise en place d’un projet
Architecture Zend Framework (INI) Symfony (YAML) apps/frontend/ modules/ index/ actions/ actions.class.php templates/ inde...
Configuration Zend Framework (INI) Symfony (YAML) [production] phpSettings.display_startup_errors = 0 phpSettings.display_...
Gestion des droits sous Zend Framework Définition des droits d’accès : $acl = new Zend_Acl(); $acl->add(new Zend_Acl_Resou...
Gestion des droits sous Symfony <ul><li>Définition des droits d’accès pour chaque module : </li></ul>index: is_secure:  on...
Utilisation des ORM <ul><li>Zend Framework avec son composant Zend_Db </li></ul><ul><li>Symfony avec Propel ou Doctrine </...
Utilisation des ORM <ul><li>Utilisation de l’ORM de Zend Framework : </li></ul>$table = new Commande(); $commande = $table...
Les plus des frameworks <ul><li>Symfony : </li></ul><ul><li>Très grande communauté en France et à l’étranger </li></ul><ul...
Conclusion <ul><li>De solides bases pour les deux frameworks </li></ul><ul><li>Symfony : </li></ul><ul><li>Flexible et bie...
Prochain SlideShare
Chargement dans…5
×

Soutenance Zend Framework vs Symfony

7 005 vues

Publié le

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

Aucun téléchargement
Vues
Nombre de vues
7 005
Sur SlideShare
0
Issues des intégrations
0
Intégrations
156
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
8
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Soutenance Zend Framework vs Symfony

  1. 1. Soutenance Vincent Composieux
  2. 2. About Epixelic <ul><li>10 employees : </li></ul><ul><li>3 directors </li></ul><ul><li>4 web developers </li></ul><ul><li>1 web designer </li></ul><ul><li>2 commercials </li></ul><ul><li>« Communication-pro » CMS </li></ul><ul><li>Larger projects </li></ul><ul><li>Other services </li></ul>
  3. 3. Environnement de travail <ul><li>Découverte de Zend Framework </li></ul><ul><li>Framework jQuery </li></ul><ul><li>Outils utilisés : SVN, Bug tracking </li></ul><ul><li>Environnement LAMP </li></ul>
  4. 4. Bug tracking : Flyspray
  5. 5. Projets sur lesquels j’ai travaillé <ul><li>My-Annonce : </li></ul><ul><li>Basé sur Zend Framework </li></ul><ul><li>Service de petites annonces </li></ul><ul><li>Multiplateforme : Auto, Moto, Immobilier … </li></ul><ul><li>Handeco : </li></ul><ul><li>Association proposant des services à l’emploi </li></ul><ul><li>aux personnes victimes d’un handicap </li></ul><ul><li>Filrouge : </li></ul><ul><li>Filrouge est une société proposant de la mise en place de </li></ul><ul><li>publicité sur différents lieux de vente </li></ul><ul><li>Jobs & Joy : </li></ul><ul><li>Développement « from scratch » </li></ul><ul><li>Site d’offres d’emploi en ligne </li></ul><ul><li>Mise en place d’un système de paiement par PayPal </li></ul>
  6. 6. Introduction aux frameworks PHP <ul><li>2 principaux frameworks : </li></ul><ul><li>Zend Framework </li></ul><ul><li>Symfony </li></ul>Légende des mots-clé : symfony     zend framework    code igniter    cake php
  7. 7. Pourquoi ? <ul><li>Zend Framework : </li></ul><ul><li>Beaucoup de composants </li></ul><ul><li>Framework officiel de Zend, société éditrice du PHP </li></ul><ul><li>Symfony : </li></ul><ul><li>Plus de 1 000 plug-ins développés par la communauté </li></ul><ul><li>Laisse le choix d’utilisation entre deux ORM </li></ul>Modèle MVC + Abstraction de la base de données Ne pas réinventer la roue
  8. 8. Le modèle MVC
  9. 9. Mapping objet-relationnel Objets Base de données <ul><li>Abstraction de la base de données : </li></ul><ul><li>Plus de requêtes SQL dans le code </li></ul><ul><li>Utilisation d’objets </li></ul>DELETE FROM user WHERE id = '5'; $user = new User( 5 ); $user->delete();
  10. 10. Mise en place d’un projet <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot &quot;/var/www/monprojet&quot; ServerName monprojet.local ErrorLog &quot;logs/ monprojet.local-error.log&quot; CustomLog &quot;logs/ monprojet.local-access.log&quot; common </VirtualHost> <ul><li>Définition de l’environnement local sous Apache </li></ul><ul><li>Définition de l’environnement local sous Apache </li></ul>Symfony : root@laptop:~/var/www$ symfony generate:project monprojet Zend Framework : root@laptop:~/var/www$ zf create project
  11. 11. Mise en place d’un projet
  12. 12. Architecture Zend Framework (INI) Symfony (YAML) apps/frontend/ modules/ index/ actions/ actions.class.php templates/ indexSuccess.php contact/ lib/ model/ application/ controllers/ IndexController.php FooController.php models/ views/ scripts/ index/ index.phtml contact/
  13. 13. Configuration Zend Framework (INI) Symfony (YAML) [production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH &quot;/../library&quot; bootstrap.path = APPLICATION_PATH &quot;/Bootstrap.php&quot; bootstrap.class = &quot;Bootstrap&quot; appnamespace = &quot;Application&quot; resources.frontController.controllerDirectory = APPLICATION_PATH &quot;/controllers&quot; resources.frontController.params.displayExceptions = 0 resources.view[] = default: http_metas: content-type: text/html metas: title: Titre de mon projet description: Description de mon projet keywords: Mots-clés de mon projet language: fr robots: index, follow stylesheets: [main.css] javascripts: [jquery-1.4.2.min.js] has_layout: true layout: layout class frontendConfiguration extends sfApplicationConfiguration { public function configure() { } } class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initDoctype() { $this->bootstrap('view'); $view = $this->getResource('view'); $view->doctype('XHTML1_STRICT'); } } Bootstrap ProjectConfiguration
  14. 14. Gestion des droits sous Zend Framework Définition des droits d’accès : $acl = new Zend_Acl(); $acl->add(new Zend_Acl_Resource('index')); $acl->add(new Zend_Acl_Resource('backend')); $acl->allow('guest', 'index'); $acl->deny('guest', 'backend'); Zend_Registry::set('acl', $acl); class Plugin_Acl extends Zend_Controller_Plugin_Abstract { public function preDispatch(Zend_Controller_Request_Abstract $request) { $acl = Zend_Registry::get('acl'); $auth = Zend_Auth::getInstance(); if(!$auth->hasIdentity()) { $roleName = 'guest'; } else { $roleName = $auth->getIdentity()->role; } $privilegeName = $request->getActionName(); if(!$acl->isAllowed($roleName, null, $privilegeName)){ $request->setControllerName('Error'); $request->setActionName('index'); } } } Création du plug-in de test :
  15. 15. Gestion des droits sous Symfony <ul><li>Définition des droits d’accès pour chaque module : </li></ul>index: is_secure: on credentials: administrator all: is_secure: off <ul><li>Plus rapide à écrire </li></ul><ul><li>Découpage pour chaque module </li></ul><ul><li>Avantages : </li></ul>
  16. 16. Utilisation des ORM <ul><li>Zend Framework avec son composant Zend_Db </li></ul><ul><li>Symfony avec Propel ou Doctrine </li></ul><ul><li>Point important entre deux frameworks </li></ul><ul><li>Mise en place du modèle de classe avec Zend Framework : </li></ul>class Commande extends Zend_Db_Table_Abstract { protected $_name = 'commande'; protected $_primary = 'id'; } <ul><li>Mise en place du modèle de classes avec Symfony : </li></ul>symfony doctrine:build-model symfony doctrine:build-sql
  17. 17. Utilisation des ORM <ul><li>Utilisation de l’ORM de Zend Framework : </li></ul>$table = new Commande(); $commande = $table->find(5); <ul><li>Utilisation d’un des ORM de Symfony (ici Doctrine) : </li></ul>$commande = Doctrine::getTable('commande')->find(5); $nom = $commande->utilisateur->nom; $commande->delete();
  18. 18. Les plus des frameworks <ul><li>Symfony : </li></ul><ul><li>Très grande communauté en France et à l’étranger </li></ul><ul><li>Système de plug-in très bien integré dans le framework (1133 plug-ins à ce jour) </li></ul><ul><li>Gain de productivité conséquent en terme de temps </li></ul><ul><li>Zend Framework : </li></ul><ul><li>Permet également de développeur des plug-ins mais ils ne sont pas répertoriés </li></ul><ul><li>Petite communauté, partage via des blogs ou services de distribution de code </li></ul>
  19. 19. Conclusion <ul><li>De solides bases pour les deux frameworks </li></ul><ul><li>Symfony : </li></ul><ul><li>Flexible et bien structuré </li></ul><ul><li>Rapidité et gain de productivité </li></ul><ul><li>Choix de se baser sur des ORM performants </li></ul><ul><li>Fait pour des projets qui sont amenés à évoluer </li></ul><ul><li>Zend Framework : </li></ul><ul><li>Flexible et bonne personnalisation </li></ul><ul><li>Projets qui ne vont pas avoir d’évolutions majeures dans le futur </li></ul><ul><li>Futur : </li></ul><ul><li>Symfony2, Zend Framework2 basés sur PHP 5.3 (namespaces, …) </li></ul><ul><li>Zend Framework va intégrer Doctrine à sa version 2 </li></ul><ul><li>Prévus pour fin de l’année 2010 </li></ul>

×