SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Philippe Gamache
 
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
 
Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2Ahmed ABATAL
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)Fabien Potencier
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overviewSymfonyMu
 
Présentation symfony epita
Présentation symfony epitaPrésentation symfony epita
Présentation symfony epitaNoel GUILBERT
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 
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
 
Formation Symfony2 par KNP Labs
Formation Symfony2 par KNP LabsFormation Symfony2 par KNP Labs
Formation Symfony2 par KNP LabsKNP Labs
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2Hugo Hamon
 
Principes De Base De Asp .Net
Principes De Base De Asp .NetPrincipes De Base De Asp .Net
Principes De Base De Asp .NetGregory Renard
 
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
 
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)Plateforme De DéVeloppement En Php5 (Zend + Doctrine)
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)cornnery
 
Alphorm.com Formation Docker (2/2) - Administration Avancée
Alphorm.com Formation Docker (2/2) - Administration Avancée Alphorm.com Formation Docker (2/2) - Administration Avancée
Alphorm.com Formation Docker (2/2) - Administration Avancée Alphorm
 
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
 
Alphorm.com Formation React Package Manager : npm et yarn
Alphorm.com Formation React Package Manager : npm et yarnAlphorm.com Formation React Package Manager : npm et yarn
Alphorm.com Formation React Package Manager : npm et yarnAlphorm
 

La actualidad más candente (20)

Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009
 
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
 
Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overview
 
Présentation symfony epita
Présentation symfony epitaPrésentation symfony epita
Présentation symfony epita
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
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
 
Symfony 2 et le Web
Symfony 2 et le WebSymfony 2 et le Web
Symfony 2 et le Web
 
Formation Symfony2 par KNP Labs
Formation Symfony2 par KNP LabsFormation Symfony2 par KNP Labs
Formation Symfony2 par KNP Labs
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
PHP5 et Zend Framework
PHP5 et Zend FrameworkPHP5 et Zend Framework
PHP5 et Zend Framework
 
Principes De Base De Asp .Net
Principes De Base De Asp .NetPrincipes De Base De Asp .Net
Principes De Base De Asp .Net
 
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...
 
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)Plateforme De DéVeloppement En Php5 (Zend + Doctrine)
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)
 
EcmaScript
EcmaScriptEcmaScript
EcmaScript
 
Alphorm.com Formation Docker (2/2) - Administration Avancée
Alphorm.com Formation Docker (2/2) - Administration Avancée Alphorm.com Formation Docker (2/2) - Administration Avancée
Alphorm.com Formation Docker (2/2) - Administration Avancée
 
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 ...
 
Initiation à ASP.NET 4.0
Initiation à ASP.NET 4.0Initiation à ASP.NET 4.0
Initiation à ASP.NET 4.0
 
Alphorm.com Formation React Package Manager : npm et yarn
Alphorm.com Formation React Package Manager : npm et yarnAlphorm.com Formation React Package Manager : npm et yarn
Alphorm.com Formation React Package Manager : npm et yarn
 

Destacado

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
 
Symfi formation-symfony-les-bases
Symfi formation-symfony-les-basesSymfi formation-symfony-les-bases
Symfi formation-symfony-les-basesCERTyou Formation
 
Working with oro crm entities
Working with oro crm entitiesWorking with oro crm entities
Working with oro crm entitiesOro Inc.
 
OroPlatform and OroCRM from a developer's perspective
OroPlatform and OroCRM from a developer's perspectiveOroPlatform and OroCRM from a developer's perspective
OroPlatform and OroCRM from a developer's perspectiveYevhen Shyshkin
 
Symfony with angular.pptx
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptxEsokia
 
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
 
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
 

Destacado (9)

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
 
Symfi formation-symfony-les-bases
Symfi formation-symfony-les-basesSymfi formation-symfony-les-bases
Symfi formation-symfony-les-bases
 
Working with oro crm entities
Working with oro crm entitiesWorking with oro crm entities
Working with oro crm entities
 
OroPlatform and OroCRM from a developer's perspective
OroPlatform and OroCRM from a developer's perspectiveOroPlatform and OroCRM from a developer's perspective
OroPlatform and OroCRM from a developer's perspective
 
Tutoriel java
Tutoriel javaTutoriel java
Tutoriel java
 
Symfony with angular.pptx
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptx
 
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
 
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
 

Similar a Presentation symfony

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
 
Webinar offre entreprise
Webinar offre entrepriseWebinar offre entreprise
Webinar offre entrepriseMichael Harlaut
 
20090727 Cv Synca7 Eric Viala
20090727 Cv Synca7 Eric Viala20090727 Cv Synca7 Eric Viala
20090727 Cv Synca7 Eric VialaÉric Viala
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open SourceIppon
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Jean-Marc Fontaine
 
S29 valorisation de l'existant ibm i avec php
S29   valorisation de l'existant ibm i avec phpS29   valorisation de l'existant ibm i avec php
S29 valorisation de l'existant ibm i avec phpGautier DUMAS
 
Votre site eCommerce avec Drupal Commerce dans le cloud Azure
Votre site eCommerce avec Drupal Commerce dans le cloud AzureVotre site eCommerce avec Drupal Commerce dans le cloud Azure
Votre site eCommerce avec Drupal Commerce dans le cloud AzureAnne-Sophie Picot
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?ekino
 
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 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
 
Keynote change 2013
Keynote change 2013Keynote change 2013
Keynote change 2013rbschange
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...PimpMySharePoint
 
CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?
CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?
CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?Smile I.T is open
 

Similar a Presentation symfony (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...
 
Webinar offre entreprise
Webinar offre entrepriseWebinar offre entreprise
Webinar offre entreprise
 
20090727 Cv Synca7 Eric Viala
20090727 Cv Synca7 Eric Viala20090727 Cv Synca7 Eric Viala
20090727 Cv Synca7 Eric Viala
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Symfony et le Web
Symfony et le WebSymfony et le Web
Symfony et le Web
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open Source
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011
 
S29 valorisation de l'existant ibm i avec php
S29   valorisation de l'existant ibm i avec phpS29   valorisation de l'existant ibm i avec php
S29 valorisation de l'existant ibm i avec php
 
Votre site eCommerce avec Drupal Commerce dans le cloud Azure
Votre site eCommerce avec Drupal Commerce dans le cloud AzureVotre site eCommerce avec Drupal Commerce dans le cloud Azure
Votre site eCommerce avec Drupal Commerce dans le cloud Azure
 
Les CMS basés sur framework - PHP Tour 2011
Les CMS basés sur framework - PHP Tour 2011Les CMS basés sur framework - PHP Tour 2011
Les CMS basés sur framework - PHP Tour 2011
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
 
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
 
Keynote change 2013
Keynote change 2013Keynote change 2013
Keynote change 2013
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
 
Ontomantics Introduction
Ontomantics IntroductionOntomantics Introduction
Ontomantics Introduction
 
CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?
CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?
CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?
 

Presentation symfony

  • 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