• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Soutenance Zend Framework vs Symfony
 

Soutenance Zend Framework vs Symfony

on

  • 5,749 views

 

Statistics

Views

Total Views
5,749
Views on SlideShare
5,749
Embed Views
0

Actions

Likes
5
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Soutenance Zend Framework vs Symfony Soutenance Zend Framework vs Symfony Presentation Transcript

    • Soutenance Vincent Composieux
    • About Epixelic
      • 10 employees :
      • 3 directors
      • 4 web developers
      • 1 web designer
      • 2 commercials
      • « Communication-pro » CMS
      • Larger projects
      • Other services
    • Environnement de travail
      • Découverte de Zend Framework
      • Framework jQuery
      • Outils utilisés : SVN, Bug tracking
      • Environnement LAMP
    • Bug tracking : Flyspray
    • Projets sur lesquels j’ai travaillé
      • My-Annonce :
      • Basé sur Zend Framework
      • Service de petites annonces
      • Multiplateforme : Auto, Moto, Immobilier …
      • Handeco :
      • Association proposant des services à l’emploi
      • aux personnes victimes d’un handicap
      • Filrouge :
      • Filrouge est une société proposant de la mise en place de
      • publicité sur différents lieux de vente
      • Jobs & Joy :
      • Développement « from scratch »
      • Site d’offres d’emploi en ligne
      • Mise en place d’un système de paiement par PayPal
    • Introduction aux frameworks PHP
      • 2 principaux frameworks :
      • Zend Framework
      • Symfony
      Légende des mots-clé : symfony     zend framework    code igniter    cake php
    • Pourquoi ?
      • Zend Framework :
      • Beaucoup de composants
      • Framework officiel de Zend, société éditrice du PHP
      • Symfony :
      • Plus de 1 000 plug-ins développés par la communauté
      • Laisse le choix d’utilisation entre deux ORM
      Modèle MVC + Abstraction de la base de données Ne pas réinventer la roue
    • Le modèle MVC
    • Mapping objet-relationnel Objets Base de données
      • Abstraction de la base de données :
      • Plus de requêtes SQL dans le code
      • Utilisation d’objets
      DELETE FROM user WHERE id = '5'; $user = new User( 5 ); $user->delete();
    • 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>
      • Définition de l’environnement local sous Apache
      • Définition de l’environnement local sous Apache
      Symfony : root@laptop:~/var/www$ symfony generate:project monprojet Zend Framework : root@laptop:~/var/www$ zf create project
    • Mise en place d’un projet
    • 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/
    • 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
    • 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 :
    • Gestion des droits sous Symfony
      • Définition des droits d’accès pour chaque module :
      index: is_secure: on credentials: administrator all: is_secure: off
      • Plus rapide à écrire
      • Découpage pour chaque module
      • Avantages :
    • Utilisation des ORM
      • Zend Framework avec son composant Zend_Db
      • Symfony avec Propel ou Doctrine
      • Point important entre deux frameworks
      • Mise en place du modèle de classe avec Zend Framework :
      class Commande extends Zend_Db_Table_Abstract { protected $_name = 'commande'; protected $_primary = 'id'; }
      • Mise en place du modèle de classes avec Symfony :
      symfony doctrine:build-model symfony doctrine:build-sql
    • Utilisation des ORM
      • Utilisation de l’ORM de Zend Framework :
      $table = new Commande(); $commande = $table->find(5);
      • Utilisation d’un des ORM de Symfony (ici Doctrine) :
      $commande = Doctrine::getTable('commande')->find(5); $nom = $commande->utilisateur->nom; $commande->delete();
    • Les plus des frameworks
      • Symfony :
      • Très grande communauté en France et à l’étranger
      • Système de plug-in très bien integré dans le framework (1133 plug-ins à ce jour)
      • Gain de productivité conséquent en terme de temps
      • Zend Framework :
      • Permet également de développeur des plug-ins mais ils ne sont pas répertoriés
      • Petite communauté, partage via des blogs ou services de distribution de code
    • Conclusion
      • De solides bases pour les deux frameworks
      • Symfony :
      • Flexible et bien structuré
      • Rapidité et gain de productivité
      • Choix de se baser sur des ORM performants
      • Fait pour des projets qui sont amenés à évoluer
      • Zend Framework :
      • Flexible et bonne personnalisation
      • Projets qui ne vont pas avoir d’évolutions majeures dans le futur
      • Futur :
      • Symfony2, Zend Framework2 basés sur PHP 5.3 (namespaces, …)
      • Zend Framework va intégrer Doctrine à sa version 2
      • Prévus pour fin de l’année 2010