SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
symfony
                    Un Framework Open-Source
                      pour les Professionnels

                                   Fabien Potencier
                          http://www.symfony-project.com/
                               http://www.sensio.com/



AFUP - 06/03/2007   www.symfony-project.com    fabien.potencier@sensio.com   www.sensio.com
Sensio
  • Agence créée en 1998
          – Groupe de 150 personnes
          – 30 personnes dédiées au nouvelles technologies

                                  SENSIO
                              Agence Interactive



                                                                                        Conseil en stratégie Internet
                                                Technologies
                    Webmarketing
                                                  Internet
                                                                                        Développement d’applications
                                                                                         interactives à valeur ajoutée

                                                Technologies
                                                 Open Source
                                              (Framework PHP)




AFUP - 06/03/2007             www.symfony-project.com     fabien.potencier@sensio.com     www.sensio.com
Nos clients




AFUP - 06/03/2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Sensio Labs
  • Des clients Grands Comptes et Institutionnels
          – Conseil en stratégie Internet
          – Assistance à maîtrise d’ouvrage
          – Audit / Formation
          – Développement Internet/Intranet




AFUP - 06/03/2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Sensio Labs
  • Spécialiste du monde Open-Source (LAMP)
          – Linux
          – Apache
          – MySQL / PostgreSQL
          – PHP / Perl / Python / Ruby
  • Un pôle R&D dédié à l’Open-Source

                                                                                    Créateur
                                                                                 Framework PHP
                                                                                    symfony

AFUP - 06/03/2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
symfony
  •     Framework Web PHP                             Licence
  •     Basé sur 9 ans d’expérience Sensio               MIT

  •     Basé sur des projets existants
  •     Open-Source
                                             Rapprocher
  •     Conçu pour gérer :             le monde de l’Entreprise
                                                                             et le monde de l’Open-Source
          – Des sites professionnels
          – Des problématiques complexes
          – Dans des environnements exigeants


AFUP - 06/03/2007   www.symfony-project.com    fabien.potencier@sensio.com   www.sensio.com
Pourquoi PHP ?
  •     Langage de script dynamique
  •     Choisi par les Grands Comptes
  •     Communauté importante
  •     Bien documenté
  •     Performant
  •     Facile à héberger




AFUP - 06/03/2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Framework Web
                                    « Cadre de Travail »

  • Composants logiciels génériques
          – Préfabriqués
          – Intégrés
          – Répondent aux problématiques Web
  • Professionnalisation des développements
          –   Structuration
          –   Standardisation
          –   Industrialisation
          –   Pérennité


AFUP - 06/03/2007      www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
CMS - Content Management System
  • CMS traditionnel
         – Fonctionnalités standards
         – Outil de contribution standard
          Le site s’adapte au CMS                                                                       =
  • CMS basé sur symfony                                                                                CMS

          – Briques logicielles CMS
                    • Editeur rich text, URLs propres, cache, gestion des comptes
                      utilisateurs, plugins…
          Le CMS s’adapte au site
                                                                                                     Efficacité
                                                                                                    Productivité

AFUP - 06/03/2007          www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Ne pas réinventer la roue
  • Architecture MVC : Modèle / Vue / Contrôleur
  • Normes de développement
  • Couche d’abstraction Objet-Relationnel
  • Tests unitaires et fonctionnels
  • Gestion des déploiements, support des
    environnements
  • Sécurité (protection XSS par défaut)
  • Extensibilité (système de plugins)

AFUP - 06/03/2007    www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Développer plus vite
  • Une ligne de code a un coût
          – Pour l’écrire                                                           moins de code
                                                                                           
          – Pour la tester
                                                                                  moins de complexité
          – Pour la maintenir                                                              
                                                                                    moins de bugs
  • Ecrire moins de code                                                                   
          –   Architecture : contrôleur, ORM, …                                   gain de productivité
                                                                                           
          –   Fichiers de configuration
                                                                                     gain de temps
          –   Autoloading
          –   Générateurs
          –   Helpers
  • Plus de temps pour les règles métiers, cas limites, …
AFUP - 06/03/2007      www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
symfony, un Framework Web

                                                              Architecture MVC
                        Lisibilité                            Standardisation
                           
                      Maintenabilité                          Tests unitaires et fonctionnels
                                                              Documentation API
                           
                       Evolutivité                            Orienté Objets
                                                              Plugins
                           
                       Pérennité




AFUP - 06/03/2007       www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Les Atouts Fonctionnels
  •     Documentation
  •     Configurabilité
  •     Protection XSS                                                               Les Standards
  •     Aide debugging                                                                   PHP 5
                                                                                          MVC
  •     Tests fonctionnels                                                              Routing
  •     Admin Generator                                                                  Cache
  •     ORM : Propel ou Doctrine
  •     i18n / l10n
  •     Extensibilité : Plugins
  •     1.0 maintenue sur le long terme
AFUP - 06/03/2007    www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Création d’une Application
  $ pear channel-discover pear.symfony-project.com
  $ pear install symfony/symfony-stable
                                                                                      Installation Subversion
                                                                                     Package Téléchargeable
  $ mkdir ~/sfdemo
  $ cd ~/sfdemo
                                                                                                  Projet
                                                                                                   
                                                                                               Application(s)
  $ symfony init-project sfdemo                                                                    
  $ ./symfony init-app frontend                                                                  Module(s)
                                                                                                   
                                                                                                 Action(s)
                                                                                               Composant(s)
                                                                                                     
                                                                                                 Template


AFUP - 06/03/2007     www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Base de données
  • Configuration de la base de données
         # config/databases.yml
         prod:
                                                                                              Gestion
           propel:
                                                                                        des environnements
             param:
               password: PAssWD
         all:
           propel:
             class:       sfPropelDatabase
             param:
               dsn:       mysql://root:@localhost/blog

  • Définition du schéma                                                                   Abstraction SQL
         # config/schema.yml
         post:
           title:        { type:        varchar, size: 255 }
           content:      { type:        longvarchar }
           is_published: { type:        boolean }
           author_id:    { type:        integer, foreignTable: author, foreignReference: id }
           created_on:   ~
AFUP - 06/03/2007     www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Base de données
  • Création des données de tests
            # config/fixtures.yml
            Author:
              fabien:
                first_name: Fabien
                last_name: Potencier
            Post:
              first_post:
                author_id: fabien
                title:     Conférence AFUP                                   1) Crée les classes du modèle
                                                                             2) Converti le schéma en SQL
                                                                             3) Crée les tables
  $ ./symfony propel-build-all-load
                                                                             4) Charge les données de test


AFUP - 06/03/2007    www.symfony-project.com   fabien.potencier@sensio.com    www.sensio.com
Le Modèle
  // lib/model/Author.php
  class Author extends BaseAuthor
  {
    function getFullName()
    {
      return $this->getFirstName().' '.$this->getLastName();
    }
  }

  $author = new Author();                                                                 ORM
  $author->setFirstName('Fabien');                                             Object Relationship Mapping
  $author->setLastName('Potencier');                                                Propel / Doctrine
  $author->save();

  $post = new Post();
  $post->setAuthor($author);
  $post->setPublishedOn('12:00 tomorrow');
  $post->save();

  $posts = PostPeer::doSelect(new Criteria());

AFUP - 06/03/2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Création du Back-Office
  • Création automatique d’une Console
    d’Administration de Production
          – Listes                  – Filtres                                          Code généré MVC
                                                                                       et personnalisable
          – Pagination              – Validation                                      Fichier configuration
                                                                                           Contrôleur
          – Tri                     – CRUD                                                 Templates


  $ ./symfony propel-init-admin frontend post Post



                                                                                 1) Crée un module post
                                                                                 2) Génère la configuration


AFUP - 06/03/2007    www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Admin Generator
  • Liste




AFUP - 06/03/2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Admin Generator
  • Edition




AFUP - 06/03/2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Configurabilité
  • Au niveau des modules
          # apps/frontend/modules/post/config/generator.yml
          generator:
             class:         sfPropelAdminGenerator
             param:                                         Configuration en cascade
               model_class: Post
                                                                  Framework
           list:
             display: [=title, author, created_on]                   Projet
             filters: [title, author, published_on]                Application
                                                                                                Module
  • Au niveau de l’application
          # apps/frontend/config/security.yml
          default:
            is_secure:   on
            credentials: admin

  $ ./symfony plugin-install                                                                        LOC : 0
    http://plugins.symfony-project.com/sfGuardPlugin

AFUP - 06/03/2007      www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Création du Front-Office
  • Routing bidirectionnel
                                                           /

   # apps/frontend/config/routing.yml                          # apps/fontend/modules/post/templates/listSuccess.php
                                                               <?php echo url_for('@homepage') ?>
                                                  
   homepage:
     url:   /
     param: { module: blog, action: recent }



                             /blog/2007/03/06/conference-afup.html

 # apps/frontend/config/routing.yml                        # apps/fontend/modules/post/templates/listSuccess.php
 post:                                                     <?php echo link_to(
   url:   /blog/:year/:month/:day/:slug.html                 $post->getTitle(),
                                                             sprintf('@post?year=%d&month=%d&day=%d&slug=%s',
                                                  
   param: { module: blog, action: show }
                                                               $post->getCreatedOn('Y'),
   requirements:
                                                               $post->getCreatedOn('m'),
     year: d{4}
                                                               $post->getCreatedOn('d'),
     month: dd
                                                               $post->getSlug()
     day:   dd                                           )) ?>

AFUP - 06/03/2007       www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Tests Fonctionnels
  • Scénario de navigation
          // test/functional/frontend/postActionsTest.php
          $browser = new sfTestBrowser();
          $browser->initialize();                                       TDD
          $browser->                                          Test Driven Development
            get('/')->
            isStatusCode(200)->
            checkResponseElement('h1.title', '/Conférence AFUP/');

  $ ./symfony test-functional frontend
  # get /
  ok 1 - status code is 200
  not ok 2 - response selector h1 does not match regex /Conférence AFUP/
  # Looks like you failed 1 tests of 4
  1..2



AFUP - 06/03/2007     www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Notre première ligne de code
  # apps/frontend/modules/post/actions/actions.class.php
  class postActions extends sfActions
  {
    function executeShow()
    {
      $id = $this->getRequestParameter('id');
      $this->post = PostPeer::retrieveByPk($id);             MVC
      $this->forward404Unless($this->post);        Modèle / Vue / Contrôleur
    }                                                        XSS
  }                                                   Sécurité par défaut


  # apps/frontend/modules/post/templates/showSuccess.php
  <h1 class="title"><?php echo $post->getTitle() ?></h1>
  <h2>par <?php echo $post->getAuthor()->getFullName() ?></h2>
  <p><?php echo $post->getHtmlContent(ESC_RAW) ?></p>

AFUP - 06/03/2007      www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Outils pour débugger
  • Web Debug Toolbar




AFUP - 06/03/2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Outils pour débugger
  • Messages d’erreurs




AFUP - 06/03/2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Déploiement
  $ ./symfony test-all
  functional/frontend/postActionsTest......................ok
  All tests successful.
  Files=1, Tests=2

  # config/properties.ini
  [production]
    host=1.2.3.4
    user=fabien
    dir=/var/www/sfblog
    type=rsync

  $ ./symfony sync production go


AFUP - 06/03/2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Un Framework pour les Professionnels
  •     Issue de l’expérience
  •     1.0 stable, maintenue et support commercial
  •     Communauté haut de gamme, support
  •     Extensibilité
  •     Stabilité de l’API
  •     Documentation
                                                                                       Une vision du Web
                                                                                        Professionnelle
                                                                                         Pragmatique


AFUP - 06/03/2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Quelques Chiffres
  •     3 ans de R&D
  •     Version 1.0 stable
  •     Support commercial
  •     Documentation Open-Source
          – Livre référence (450 pages - GFDL)
          – Tutorial pas à pas (250 pages)
  • Communauté importante
                                                                                              Mature
          – Développeurs dans 80 pays                                                        Reconnu
          – 100 000 visiteurs uniques par mois
AFUP - 06/03/2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
De Belles Références
  • Yahoo! (USA)
          – Yahoo! Bookmarks
          – 20 millions d’utilisateurs
          – Web 2.0 / AJAX




AFUP - 06/03/2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
Rejoignez-nous
  • Sensio Labs recrute
          – Des développeurs
          – Des chefs de projet technique
  • Le Web est l’une de vos passions ?
          – Développeur : Vous avez une expérience dans le
            développement de sites Web en PHP voire en
            symfony. Vous développez en PHP5 objets, vous
            connaissez l’AJAX.
          – Chef de Projet : Vous êtes développeur et vous
            souhaitez gérer des projets pour des grands comptes.

AFUP - 06/03/2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensio.com
SENSIO S.A.
                                   26, rue Salomon de Rothschild
                                      92 286 SURESNES cedex
                                               Tél. : 01 40 99 80 80
                                               Fax : 01 40 99 83 34

                                                Contact
                                           Fabien Potencier
                                     fabien.potencier@sensio.com




        http://www.sensio.com/                                       http://www.symfony-project.com/

AFUP - 06/03/2007    www.symfony-project.com      fabien.potencier@sensio.com   www.sensio.com

Contenu connexe

Tendances

Atelier Symfony2- Introduction
Atelier Symfony2- IntroductionAtelier Symfony2- Introduction
Atelier Symfony2- IntroductionMarwa OUNALLI
 
Formation Symfony2 par KNP Labs
Formation Symfony2 par KNP LabsFormation Symfony2 par KNP Labs
Formation Symfony2 par KNP LabsKNP Labs
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overviewSymfonyMu
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesXavier Gorse
 
Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2Ahmed ABATAL
 
Présentation symfony epita
Présentation symfony epitaPrésentation symfony epita
Présentation symfony epitaNoel GUILBERT
 
Symfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en TwigSymfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en TwigAbdelkader Rhouati
 
Django pour les développeurs Symfony (et réciproquement)
Django pour les développeurs Symfony (et réciproquement)Django pour les développeurs Symfony (et réciproquement)
Django pour les développeurs Symfony (et réciproquement)Nicolas Perriault
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2Hugo Hamon
 
Exposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
Exposer des services web SOAP et REST avec symfony 1.4 et Zend FrameworkExposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
Exposer des services web SOAP et REST avec symfony 1.4 et Zend FrameworkHugo Hamon
 
wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3Nicolas Lœuillet
 
Présentation de symfony - Human talks aux docks le 8 juillet 2014
Présentation de symfony - Human talks aux docks le 8 juillet 2014Présentation de symfony - Human talks aux docks le 8 juillet 2014
Présentation de symfony - Human talks aux docks le 8 juillet 2014Tony Galmiche
 
Utiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec SymfonyUtiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec SymfonyXavier Gorse
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Xavier Lacot
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonyVincent Composieux
 
Symfony 2 : chapitre 4 - Les services et les formulaires
Symfony 2 : chapitre 4 - Les services et les formulairesSymfony 2 : chapitre 4 - Les services et les formulaires
Symfony 2 : chapitre 4 - Les services et les formulairesAbdelkader Rhouati
 
symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...Fabien Potencier
 

Tendances (20)

Atelier Symfony2- Introduction
Atelier Symfony2- IntroductionAtelier Symfony2- Introduction
Atelier Symfony2- Introduction
 
Formation Symfony2 par KNP Labs
Formation Symfony2 par KNP LabsFormation Symfony2 par KNP Labs
Formation Symfony2 par KNP Labs
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overview
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notes
 
Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2
 
Présentation symfony epita
Présentation symfony epitaPrésentation symfony epita
Présentation symfony epita
 
Symfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en TwigSymfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en Twig
 
Django pour les développeurs Symfony (et réciproquement)
Django pour les développeurs Symfony (et réciproquement)Django pour les développeurs Symfony (et réciproquement)
Django pour les développeurs Symfony (et réciproquement)
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
Symfony 2 et le Web
Symfony 2 et le WebSymfony 2 et le Web
Symfony 2 et le Web
 
Exposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
Exposer des services web SOAP et REST avec symfony 1.4 et Zend FrameworkExposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
Exposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
 
wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3
 
Présentation de symfony - Human talks aux docks le 8 juillet 2014
Présentation de symfony - Human talks aux docks le 8 juillet 2014Présentation de symfony - Human talks aux docks le 8 juillet 2014
Présentation de symfony - Human talks aux docks le 8 juillet 2014
 
PHP5 et Zend Framework
PHP5 et Zend FrameworkPHP5 et Zend Framework
PHP5 et Zend Framework
 
Utiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec SymfonyUtiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec Symfony
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
 
Symfony 2 : chapitre 4 - Les services et les formulaires
Symfony 2 : chapitre 4 - Les services et les formulairesSymfony 2 : chapitre 4 - Les services et les formulaires
Symfony 2 : chapitre 4 - Les services et les formulaires
 
symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...
 

En vedette

Symfony 2 : chapitre 3 - Les modèles en Doctrine 2
Symfony 2 : chapitre 3 - Les modèles en Doctrine 2Symfony 2 : chapitre 3 - Les modèles en Doctrine 2
Symfony 2 : chapitre 3 - Les modèles en Doctrine 2Abdelkader Rhouati
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Sofien Benrhouma
 
Drupal 8 + Symfony 2 = une équipe gagnante
Drupal 8 + Symfony 2 = une équipe gagnanteDrupal 8 + Symfony 2 = une équipe gagnante
Drupal 8 + Symfony 2 = une équipe gagnanteVanessa David
 
Design patterns avec Symfony
Design patterns avec SymfonyDesign patterns avec Symfony
Design patterns avec SymfonyMohammed Rhamnia
 
Symfony with angular.pptx
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptxEsokia
 
Comment construire un environnement e-commerce complet avec Symfony 2 ?
Comment construire un environnement e-commerce complet avec Symfony 2 ? Comment construire un environnement e-commerce complet avec Symfony 2 ?
Comment construire un environnement e-commerce complet avec Symfony 2 ? Fabien Gasser
 
Symfony Debug & VarDumper
Symfony Debug & VarDumperSymfony Debug & VarDumper
Symfony Debug & VarDumpernicolas.grekas
 
Symfi formation-symfony-les-bases
Symfi formation-symfony-les-basesSymfi formation-symfony-les-bases
Symfi formation-symfony-les-basesCERTyou Formation
 
Boostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpeditBoostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpeditauto entrepreneur
 
Very lastroom symfony1 vers symfony2 en douceur
Very lastroom   symfony1 vers symfony2 en douceurVery lastroom   symfony1 vers symfony2 en douceur
Very lastroom symfony1 vers symfony2 en douceurSébastien Houzé
 
La Console Symfony
La Console Symfony La Console Symfony
La Console Symfony Imad ZAIRIG
 
Conference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à ParisConference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à ParisChipway
 
Symfony 2 : Performances et Optimisations
Symfony 2 : Performances et OptimisationsSymfony 2 : Performances et Optimisations
Symfony 2 : Performances et OptimisationsLes-Tilleuls.coop
 
Symfony live Paris 2014 - Symfony2 sur Azure
Symfony live Paris 2014 - Symfony2 sur AzureSymfony live Paris 2014 - Symfony2 sur Azure
Symfony live Paris 2014 - Symfony2 sur AzureStéphane ESCANDELL
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ ekino
 

En vedette (18)

Symfony 2 : chapitre 3 - Les modèles en Doctrine 2
Symfony 2 : chapitre 3 - Les modèles en Doctrine 2Symfony 2 : chapitre 3 - Les modèles en Doctrine 2
Symfony 2 : chapitre 3 - Les modèles en Doctrine 2
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
 
Presentation symfony
Presentation symfonyPresentation symfony
Presentation symfony
 
Drupal 8 + Symfony 2 = une équipe gagnante
Drupal 8 + Symfony 2 = une équipe gagnanteDrupal 8 + Symfony 2 = une équipe gagnante
Drupal 8 + Symfony 2 = une équipe gagnante
 
Design patterns avec Symfony
Design patterns avec SymfonyDesign patterns avec Symfony
Design patterns avec Symfony
 
Symfony with angular.pptx
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptx
 
Comment construire un environnement e-commerce complet avec Symfony 2 ?
Comment construire un environnement e-commerce complet avec Symfony 2 ? Comment construire un environnement e-commerce complet avec Symfony 2 ?
Comment construire un environnement e-commerce complet avec Symfony 2 ?
 
Symfony Debug & VarDumper
Symfony Debug & VarDumperSymfony Debug & VarDumper
Symfony Debug & VarDumper
 
Symfi formation-symfony-les-bases
Symfi formation-symfony-les-basesSymfi formation-symfony-les-bases
Symfi formation-symfony-les-bases
 
Boostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpeditBoostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpedit
 
Very lastroom symfony1 vers symfony2 en douceur
Very lastroom   symfony1 vers symfony2 en douceurVery lastroom   symfony1 vers symfony2 en douceur
Very lastroom symfony1 vers symfony2 en douceur
 
La Console Symfony
La Console Symfony La Console Symfony
La Console Symfony
 
Conference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à ParisConference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à Paris
 
Drupal 8
Drupal 8Drupal 8
Drupal 8
 
Symfony 2 : Performances et Optimisations
Symfony 2 : Performances et OptimisationsSymfony 2 : Performances et Optimisations
Symfony 2 : Performances et Optimisations
 
Symfony live Paris 2014 - Symfony2 sur Azure
Symfony live Paris 2014 - Symfony2 sur AzureSymfony live Paris 2014 - Symfony2 sur Azure
Symfony live Paris 2014 - Symfony2 sur Azure
 
Symfonytn
SymfonytnSymfonytn
Symfonytn
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+
 

Similaire à symfony : Un Framework Open-Source pour les Professionnels

symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...
symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...
symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...Fabien Potencier
 
Presentation Ai3 Journée Web Agency
Presentation Ai3   Journée Web AgencyPresentation Ai3   Journée Web Agency
Presentation Ai3 Journée Web Agencyxavier.raymond
 
Monitoring d'applications PHP, Salon des solutions Linux Open Source
Monitoring d'applications PHP, Salon des solutions Linux Open SourceMonitoring d'applications PHP, Salon des solutions Linux Open Source
Monitoring d'applications PHP, Salon des solutions Linux Open SourceVanessa55
 
201003 Solutions Linux
201003 Solutions Linux201003 Solutions Linux
201003 Solutions LinuxVanessa55
 
Monitoring Des Applications Php, Salon Des Solutions Linux Open Source
Monitoring Des Applications Php, Salon Des Solutions Linux Open SourceMonitoring Des Applications Php, Salon Des Solutions Linux Open Source
Monitoring Des Applications Php, Salon Des Solutions Linux Open SourceOxalide
 
201003 Solutions Linux
201003 Solutions Linux201003 Solutions Linux
201003 Solutions LinuxVanessa55
 
Monitoring Des Applications Php, Salon Des Solutions Linux Open Source
Monitoring Des Applications Php, Salon Des Solutions Linux Open SourceMonitoring Des Applications Php, Salon Des Solutions Linux Open Source
Monitoring Des Applications Php, Salon Des Solutions Linux Open SourceVanessa55
 
Webinar offre entreprise
Webinar offre entrepriseWebinar offre entreprise
Webinar offre entrepriseMichael Harlaut
 
Lutece, CMS star du J2EE
Lutece, CMS star du J2EELutece, CMS star du J2EE
Lutece, CMS star du J2EELINAGORA
 
Conception Et Mise En œUvre D’Une Plate Forme Edi Pour La Communaté Portuaire...
Conception Et Mise En œUvre D’Une Plate Forme Edi Pour La Communaté Portuaire...Conception Et Mise En œUvre D’Une Plate Forme Edi Pour La Communaté Portuaire...
Conception Et Mise En œUvre D’Une Plate Forme Edi Pour La Communaté Portuaire...Ojdoc Quen
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open SourceIppon
 
Portail d'entreprise / eXo Platform
Portail d'entreprise / eXo PlatformPortail d'entreprise / eXo Platform
Portail d'entreprise / eXo PlatformTugdual Grall
 
Nuxeo Summer Seminar 2007 - Vision And Market (FR)
Nuxeo  Summer Seminar 2007 - Vision And Market (FR)Nuxeo  Summer Seminar 2007 - Vision And Market (FR)
Nuxeo Summer Seminar 2007 - Vision And Market (FR)Stefane Fermigier
 
La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...
La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...
La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...OCTO Technology
 
Sp Parisweb 17112007
Sp Parisweb 17112007Sp Parisweb 17112007
Sp Parisweb 17112007slidingian
 
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
 
Présentation welcom la webperf by object23
Présentation welcom la webperf by object23Présentation welcom la webperf by object23
Présentation welcom la webperf by object23Brigitte Marandon
 
Infrastructure agile avec Cloudformation - AWS Summit 2016
Infrastructure agile avec Cloudformation - AWS Summit 2016Infrastructure agile avec Cloudformation - AWS Summit 2016
Infrastructure agile avec Cloudformation - AWS Summit 2016Antoine Guy
 

Similaire à symfony : Un Framework Open-Source pour les Professionnels (20)

symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...
symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...
symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...
 
Presentation Ai3 Journée Web Agency
Presentation Ai3   Journée Web AgencyPresentation Ai3   Journée Web Agency
Presentation Ai3 Journée Web Agency
 
Monitoring d'applications PHP, Salon des solutions Linux Open Source
Monitoring d'applications PHP, Salon des solutions Linux Open SourceMonitoring d'applications PHP, Salon des solutions Linux Open Source
Monitoring d'applications PHP, Salon des solutions Linux Open Source
 
201003 Solutions Linux
201003 Solutions Linux201003 Solutions Linux
201003 Solutions Linux
 
Monitoring Des Applications Php, Salon Des Solutions Linux Open Source
Monitoring Des Applications Php, Salon Des Solutions Linux Open SourceMonitoring Des Applications Php, Salon Des Solutions Linux Open Source
Monitoring Des Applications Php, Salon Des Solutions Linux Open Source
 
201003 Solutions Linux
201003 Solutions Linux201003 Solutions Linux
201003 Solutions Linux
 
Monitoring Des Applications Php, Salon Des Solutions Linux Open Source
Monitoring Des Applications Php, Salon Des Solutions Linux Open SourceMonitoring Des Applications Php, Salon Des Solutions Linux Open Source
Monitoring Des Applications Php, Salon Des Solutions Linux Open Source
 
Webinar offre entreprise
Webinar offre entrepriseWebinar offre entreprise
Webinar offre entreprise
 
Lutece, CMS star du J2EE
Lutece, CMS star du J2EELutece, CMS star du J2EE
Lutece, CMS star du J2EE
 
Ontomantics Introduction
Ontomantics IntroductionOntomantics Introduction
Ontomantics Introduction
 
Conception Et Mise En œUvre D’Une Plate Forme Edi Pour La Communaté Portuaire...
Conception Et Mise En œUvre D’Une Plate Forme Edi Pour La Communaté Portuaire...Conception Et Mise En œUvre D’Une Plate Forme Edi Pour La Communaté Portuaire...
Conception Et Mise En œUvre D’Une Plate Forme Edi Pour La Communaté Portuaire...
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open Source
 
Portail d'entreprise / eXo Platform
Portail d'entreprise / eXo PlatformPortail d'entreprise / eXo Platform
Portail d'entreprise / eXo Platform
 
Nuxeo Summer Seminar 2007 - Vision And Market (FR)
Nuxeo  Summer Seminar 2007 - Vision And Market (FR)Nuxeo  Summer Seminar 2007 - Vision And Market (FR)
Nuxeo Summer Seminar 2007 - Vision And Market (FR)
 
La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...
La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...
La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...
 
Sp Parisweb 17112007
Sp Parisweb 17112007Sp Parisweb 17112007
Sp Parisweb 17112007
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHP
 
Flex & Java @ TourJUG
Flex & Java @ TourJUGFlex & Java @ TourJUG
Flex & Java @ TourJUG
 
Présentation welcom la webperf by object23
Présentation welcom la webperf by object23Présentation welcom la webperf by object23
Présentation welcom la webperf by object23
 
Infrastructure agile avec Cloudformation - AWS Summit 2016
Infrastructure agile avec Cloudformation - AWS Summit 2016Infrastructure agile avec Cloudformation - AWS Summit 2016
Infrastructure agile avec Cloudformation - AWS Summit 2016
 

Plus de Fabien Potencier

Dependency injection in PHP 5.3/5.4
Dependency injection in PHP 5.3/5.4Dependency injection in PHP 5.3/5.4
Dependency injection in PHP 5.3/5.4Fabien Potencier
 
Dependency injection-zendcon-2010
Dependency injection-zendcon-2010Dependency injection-zendcon-2010
Dependency injection-zendcon-2010Fabien Potencier
 
Design patterns revisited with PHP 5.3
Design patterns revisited with PHP 5.3Design patterns revisited with PHP 5.3
Design patterns revisited with PHP 5.3Fabien Potencier
 
The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010Fabien Potencier
 
Dependency injection - phpday 2010
Dependency injection - phpday 2010Dependency injection - phpday 2010
Dependency injection - phpday 2010Fabien Potencier
 
Dependency Injection IPC 201
Dependency Injection IPC 201Dependency Injection IPC 201
Dependency Injection IPC 201Fabien Potencier
 
Caching on the Edge with Symfony2
Caching on the Edge with Symfony2Caching on the Edge with Symfony2
Caching on the Edge with Symfony2Fabien Potencier
 
Unit and Functional Testing with Symfony2
Unit and Functional Testing with Symfony2Unit and Functional Testing with Symfony2
Unit and Functional Testing with Symfony2Fabien Potencier
 
News of the Symfony2 World
News of the Symfony2 WorldNews of the Symfony2 World
News of the Symfony2 WorldFabien Potencier
 
Dependency Injection - ConFoo 2010
Dependency Injection - ConFoo 2010Dependency Injection - ConFoo 2010
Dependency Injection - ConFoo 2010Fabien Potencier
 

Plus de Fabien Potencier (20)

Varnish
VarnishVarnish
Varnish
 
Look beyond PHP
Look beyond PHPLook beyond PHP
Look beyond PHP
 
Dependency injection in PHP 5.3/5.4
Dependency injection in PHP 5.3/5.4Dependency injection in PHP 5.3/5.4
Dependency injection in PHP 5.3/5.4
 
Dependency injection-zendcon-2010
Dependency injection-zendcon-2010Dependency injection-zendcon-2010
Dependency injection-zendcon-2010
 
Caching on the Edge
Caching on the EdgeCaching on the Edge
Caching on the Edge
 
Design patterns revisited with PHP 5.3
Design patterns revisited with PHP 5.3Design patterns revisited with PHP 5.3
Design patterns revisited with PHP 5.3
 
The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010
 
PhpBB meets Symfony2
PhpBB meets Symfony2PhpBB meets Symfony2
PhpBB meets Symfony2
 
Dependency injection - phpday 2010
Dependency injection - phpday 2010Dependency injection - phpday 2010
Dependency injection - phpday 2010
 
Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010
 
Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010
 
Symfony2 - OSIDays 2010
Symfony2 - OSIDays 2010Symfony2 - OSIDays 2010
Symfony2 - OSIDays 2010
 
Dependency Injection IPC 201
Dependency Injection IPC 201Dependency Injection IPC 201
Dependency Injection IPC 201
 
Caching on the Edge with Symfony2
Caching on the Edge with Symfony2Caching on the Edge with Symfony2
Caching on the Edge with Symfony2
 
Unit and Functional Testing with Symfony2
Unit and Functional Testing with Symfony2Unit and Functional Testing with Symfony2
Unit and Functional Testing with Symfony2
 
News of the Symfony2 World
News of the Symfony2 WorldNews of the Symfony2 World
News of the Symfony2 World
 
Dependency Injection - ConFoo 2010
Dependency Injection - ConFoo 2010Dependency Injection - ConFoo 2010
Dependency Injection - ConFoo 2010
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
Symfony Components
Symfony ComponentsSymfony Components
Symfony Components
 
PHP 5.3 in practice
PHP 5.3 in practicePHP 5.3 in practice
PHP 5.3 in practice
 

symfony : Un Framework Open-Source pour les Professionnels

  • 1. symfony Un Framework Open-Source pour les Professionnels Fabien Potencier http://www.symfony-project.com/ http://www.sensio.com/ AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 2. Sensio • Agence créée en 1998 – Groupe de 150 personnes – 30 personnes dédiées au nouvelles technologies SENSIO Agence Interactive Conseil en stratégie Internet Technologies Webmarketing Internet Développement d’applications interactives à valeur ajoutée Technologies Open Source (Framework PHP) AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 3. Nos clients AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 4. Sensio Labs • Des clients Grands Comptes et Institutionnels – Conseil en stratégie Internet – Assistance à maîtrise d’ouvrage – Audit / Formation – Développement Internet/Intranet AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 5. Sensio Labs • Spécialiste du monde Open-Source (LAMP) – Linux – Apache – MySQL / PostgreSQL – PHP / Perl / Python / Ruby • Un pôle R&D dédié à l’Open-Source Créateur Framework PHP symfony AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 6. symfony • Framework Web PHP Licence • Basé sur 9 ans d’expérience Sensio MIT • Basé sur des projets existants • Open-Source Rapprocher • Conçu pour gérer : le monde de l’Entreprise et le monde de l’Open-Source – Des sites professionnels – Des problématiques complexes – Dans des environnements exigeants AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 7. Pourquoi PHP ? • Langage de script dynamique • Choisi par les Grands Comptes • Communauté importante • Bien documenté • Performant • Facile à héberger AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 8. Framework Web « Cadre de Travail » • Composants logiciels génériques – Préfabriqués – Intégrés – Répondent aux problématiques Web • Professionnalisation des développements – Structuration – Standardisation – Industrialisation – Pérennité AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 9. CMS - Content Management System • CMS traditionnel – Fonctionnalités standards – Outil de contribution standard  Le site s’adapte au CMS = • CMS basé sur symfony CMS – Briques logicielles CMS • Editeur rich text, URLs propres, cache, gestion des comptes utilisateurs, plugins…  Le CMS s’adapte au site Efficacité Productivité AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 10. Ne pas réinventer la roue • Architecture MVC : Modèle / Vue / Contrôleur • Normes de développement • Couche d’abstraction Objet-Relationnel • Tests unitaires et fonctionnels • Gestion des déploiements, support des environnements • Sécurité (protection XSS par défaut) • Extensibilité (système de plugins) AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 11. Développer plus vite • Une ligne de code a un coût – Pour l’écrire moins de code  – Pour la tester moins de complexité – Pour la maintenir  moins de bugs • Ecrire moins de code  – Architecture : contrôleur, ORM, … gain de productivité  – Fichiers de configuration gain de temps – Autoloading – Générateurs – Helpers • Plus de temps pour les règles métiers, cas limites, … AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 12. symfony, un Framework Web Architecture MVC Lisibilité Standardisation  Maintenabilité Tests unitaires et fonctionnels Documentation API  Evolutivité Orienté Objets Plugins  Pérennité AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 13. Les Atouts Fonctionnels • Documentation • Configurabilité • Protection XSS Les Standards • Aide debugging PHP 5 MVC • Tests fonctionnels Routing • Admin Generator Cache • ORM : Propel ou Doctrine • i18n / l10n • Extensibilité : Plugins • 1.0 maintenue sur le long terme AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 14. Création d’une Application $ pear channel-discover pear.symfony-project.com $ pear install symfony/symfony-stable Installation Subversion Package Téléchargeable $ mkdir ~/sfdemo $ cd ~/sfdemo Projet  Application(s) $ symfony init-project sfdemo  $ ./symfony init-app frontend Module(s)  Action(s) Composant(s)  Template AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 15. Base de données • Configuration de la base de données # config/databases.yml prod: Gestion propel: des environnements param: password: PAssWD all: propel: class: sfPropelDatabase param: dsn: mysql://root:@localhost/blog • Définition du schéma Abstraction SQL # config/schema.yml post: title: { type: varchar, size: 255 } content: { type: longvarchar } is_published: { type: boolean } author_id: { type: integer, foreignTable: author, foreignReference: id } created_on: ~ AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 16. Base de données • Création des données de tests # config/fixtures.yml Author: fabien: first_name: Fabien last_name: Potencier Post: first_post: author_id: fabien title: Conférence AFUP 1) Crée les classes du modèle 2) Converti le schéma en SQL 3) Crée les tables $ ./symfony propel-build-all-load 4) Charge les données de test AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 17. Le Modèle // lib/model/Author.php class Author extends BaseAuthor { function getFullName() { return $this->getFirstName().' '.$this->getLastName(); } } $author = new Author(); ORM $author->setFirstName('Fabien'); Object Relationship Mapping $author->setLastName('Potencier'); Propel / Doctrine $author->save(); $post = new Post(); $post->setAuthor($author); $post->setPublishedOn('12:00 tomorrow'); $post->save(); $posts = PostPeer::doSelect(new Criteria()); AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 18. Création du Back-Office • Création automatique d’une Console d’Administration de Production – Listes – Filtres Code généré MVC et personnalisable – Pagination – Validation Fichier configuration Contrôleur – Tri – CRUD Templates $ ./symfony propel-init-admin frontend post Post 1) Crée un module post 2) Génère la configuration AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 19. Admin Generator • Liste AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 20. Admin Generator • Edition AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 21. Configurabilité • Au niveau des modules # apps/frontend/modules/post/config/generator.yml generator: class: sfPropelAdminGenerator param: Configuration en cascade model_class: Post Framework list: display: [=title, author, created_on] Projet filters: [title, author, published_on] Application Module • Au niveau de l’application # apps/frontend/config/security.yml default: is_secure: on credentials: admin $ ./symfony plugin-install LOC : 0 http://plugins.symfony-project.com/sfGuardPlugin AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 22. Création du Front-Office • Routing bidirectionnel / # apps/frontend/config/routing.yml # apps/fontend/modules/post/templates/listSuccess.php <?php echo url_for('@homepage') ?>  homepage: url: / param: { module: blog, action: recent } /blog/2007/03/06/conference-afup.html # apps/frontend/config/routing.yml # apps/fontend/modules/post/templates/listSuccess.php post: <?php echo link_to( url: /blog/:year/:month/:day/:slug.html $post->getTitle(), sprintf('@post?year=%d&month=%d&day=%d&slug=%s',  param: { module: blog, action: show } $post->getCreatedOn('Y'), requirements: $post->getCreatedOn('m'), year: d{4} $post->getCreatedOn('d'), month: dd $post->getSlug() day: dd )) ?> AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 23. Tests Fonctionnels • Scénario de navigation // test/functional/frontend/postActionsTest.php $browser = new sfTestBrowser(); $browser->initialize(); TDD $browser-> Test Driven Development get('/')-> isStatusCode(200)-> checkResponseElement('h1.title', '/Conférence AFUP/'); $ ./symfony test-functional frontend # get / ok 1 - status code is 200 not ok 2 - response selector h1 does not match regex /Conférence AFUP/ # Looks like you failed 1 tests of 4 1..2 AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 24. Notre première ligne de code # apps/frontend/modules/post/actions/actions.class.php class postActions extends sfActions { function executeShow() { $id = $this->getRequestParameter('id'); $this->post = PostPeer::retrieveByPk($id); MVC $this->forward404Unless($this->post); Modèle / Vue / Contrôleur } XSS } Sécurité par défaut # apps/frontend/modules/post/templates/showSuccess.php <h1 class="title"><?php echo $post->getTitle() ?></h1> <h2>par <?php echo $post->getAuthor()->getFullName() ?></h2> <p><?php echo $post->getHtmlContent(ESC_RAW) ?></p> AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 25. Outils pour débugger • Web Debug Toolbar AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 26. Outils pour débugger • Messages d’erreurs AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 27. Déploiement $ ./symfony test-all functional/frontend/postActionsTest......................ok All tests successful. Files=1, Tests=2 # config/properties.ini [production] host=1.2.3.4 user=fabien dir=/var/www/sfblog type=rsync $ ./symfony sync production go AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 28. Un Framework pour les Professionnels • Issue de l’expérience • 1.0 stable, maintenue et support commercial • Communauté haut de gamme, support • Extensibilité • Stabilité de l’API • Documentation Une vision du Web Professionnelle Pragmatique AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 29. Quelques Chiffres • 3 ans de R&D • Version 1.0 stable • Support commercial • Documentation Open-Source – Livre référence (450 pages - GFDL) – Tutorial pas à pas (250 pages) • Communauté importante Mature – Développeurs dans 80 pays Reconnu – 100 000 visiteurs uniques par mois AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 30. De Belles Références • Yahoo! (USA) – Yahoo! Bookmarks – 20 millions d’utilisateurs – Web 2.0 / AJAX AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 31. Rejoignez-nous • Sensio Labs recrute – Des développeurs – Des chefs de projet technique • Le Web est l’une de vos passions ? – Développeur : Vous avez une expérience dans le développement de sites Web en PHP voire en symfony. Vous développez en PHP5 objets, vous connaissez l’AJAX. – Chef de Projet : Vous êtes développeur et vous souhaitez gérer des projets pour des grands comptes. AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com
  • 32. SENSIO S.A. 26, rue Salomon de Rothschild 92 286 SURESNES cedex Tél. : 01 40 99 80 80 Fax : 01 40 99 83 34 Contact Fabien Potencier fabien.potencier@sensio.com http://www.sensio.com/ http://www.symfony-project.com/ AFUP - 06/03/2007 www.symfony-project.com fabien.potencier@sensio.com www.sensio.com