SlideShare une entreprise Scribd logo
1  sur  65
Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Symfony, qu’est-ce que c’est ? Un framework PHP 5 Open-Source Issu de l’expérience de Sensio Labs dans le développement d’application web Ensemble d’outils conçus pour faciliter les développements et éviter les tâches répétitives Destiné aux professionnels Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Sensio Labs Web agency  70 personnesdédiéesau développementWeb Spécialistes de l’Open-Source Noël GUILBERT – Présentation Symfony EPITA 22/04/2010 Internet Technologies Sensio Web Agency Webmarketing Creator of the symfony framework
Symfony, ce n’est pas que du code Une documentation Open-source : Plusieurs livres officiels : Practical Symfony (350 pages) The Reference guide (150 pages) More with Symfony (320 pages, disponibles en 5 langues) Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Symfony, ce n’est pas que du code Des ouvrages dans différents pays: Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Symfony, ce n’est pas que du code Différents évènements et conférences  : Symfony camp, Symfony day, Symfony Live, sprints, bug huntdays, … Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Une version « entreprise »: Version 1.4 : supportée pendant 3 ans (jusqu’à fin 2012) Environ une release par mois: Correction de bugs Pas de nouvelle fonctionnalité La mise à jour est simple et sans danger La migration depuis une version antérieure est simple Support commercial	 Documentation stable et maintenue Formations Conseil Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Objectifs Développer plus vite, et surtout mieux Promouvoir l’utilisation de bonnes pratiques de développement Réaliser des applications évolutives et maintenables Se concentrer uniquement sur la logique métier Ne pas réinventer la roue Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Développer plus vite Ecrire moins de code Plus de temps pour la logique métier, les cas limites, … Moins de code   Moins de complexité  Moins de bugs  Plus de productivité  Plus de temps Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Fonctionnalités Architecture MVC Internationalisation / Localisation ORM Support  avancé des formulaires Sécurité Gestion des environnements Outils de développement et de debug Configurable et extensible Cache Générateur d’interface d’administration Tests unitaires et fonctionnels URLs « propres » CLI Emails Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Architecture MVC Noël GUILBERT – Présentation Symfony EPITA 3 couches logiques : Model: logique métier View : présentation Controller: logique applicative Avantages : Meilleure encapsulation Code réutilisable Testable unitairement Robuste client server internet controller view model Response 22/04/2010
Url propres Symfony gère les URLs propres Pourquoi ? SEO « user-friendly » Masque l’implémentation technique  Noël GUILBERT – Présentation Symfony EPITA /blog.php?section=symfony&article_id=18475 /blog/2010-04-22/symfony-a-l-epita 22/04/2010
Outils pour le développeur Symfony est fourni avec des outils de débogage Pourquoi ? Faciliter le débogage Améliorer la productivité du développeur Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
CLI Symfony possède un certain nombre d’outils en ligne de commande pour faciliter le développement: Génération de code Exécution des tests fonctionnels et unitaires Génération de la base de données Installation de plugins Configurations diverses Déploiements Etc… Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
CLI $> php symfony Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Configurable et extensible Symfony est configurable et facilement extensible Système de plugins Pourquoi ? Le web évolue vite Chaque projet a des besoins spécifiques Un framework ne peut, et ne doit pas tout faire Faciliter les contributions externes Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Sécurité Symfony est protégé par défaut contre les principales vulnérabilités : Injection SQL XSS (Cross-site Scripting) CSRF (Cross Site Request Forgeries) Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Environnements Symfony dispose d’une notion d’environnements : Développement Test Production Pourquoi ? Le développeur doit pouvoir diagnostiquer les problèmes rapidement: barre de debug, erreurs, etc… Le site en production doit avoir le cache activé, masquer les informations sensibles en cas de problème, … Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Tests fonctionnels et unitaires Symfony dispose d’un framework de test unitaire spécialement adapté : Lime Symfony automatise les tests des applications par la simulation d’un navigateur Pourquoi ? Les tests manuels ne sont pas fiables et reproductibles Une application testée contient moins de bugs Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Cache symfony gère de façon très fine le cache des applications Plusieurs mécanismes de cache sont supportés :fichier,  APC, memcache, … Permet d’améliorer la scalabilité des applications rapidement Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
I18N et L10N Symfony possède nativement un support de l’I18N et de la L10N Facilite l’internationalisation des applications Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Object RelationalMapping Réalise le mapping entre une base de donnée relationnelle et un modèle orienté objet Couche d’abstraction de base de données Manipulation de base de données à travers une interface orientée objet Deux ORMs sont disponibles : Doctrine et  Propel Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Abstraction de base de données Chaque SGBD a ses spécificités Permet de basculer d’un SGBD à un autre facilement Vous n’avez plus de SQL à écrire ! Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Doctrine et Propel Bien intégrés à Symfony : Configuration en YAML Ligne de commandes I18n Admin-generator Documentation Tutoriels Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Décrire la structure de votre base de données Noël GUILBERT – Présentation Symfony EPITA 22/04/2010 ShopProduct: actAs: Timestampable: ~ Sluggable:       fields:      [reference, name]   columns:     reference:      { type: string(15), notnull: true, unique: true }     name:            { type: string(100), notnull: true }     description:    { type: clob, notnull: true }     stock:             { type: integer(4), notnull: true, default: 0 }     price:              { type: float, notnull: true } Nom de la classe  Comportements automatiques Définition des colonnes
Du schéma à la base de données Noël GUILBERT – Présentation Symfony EPITA 22/04/2010 ShopProduct:   columns:      name:          type: string(100),  notnull: true CREATE TABLE shop_product (     id integer NOT NULL PRIMARY KEY AUTO_INCREMENT, namevarchar(100) NOT NULL );
Des objets à la base de données Noël GUILBERT – Présentation Symfony EPITA 22/04/2010 INSERT INTO shop_product (‘reference’, ‘name’, ‘price’) VALUE (‘AZERTY’, ‘Blue couch’, 299.9);   UPDATE shop_product set name = ‘Redcouch’ WHERE id = 1;
Intégré à la barre de debug Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Support avancé des formulaires 22/04/2010 Symfony a une gestion des formulaires très avancée et très modulaire Toutes les applications ont des formulaires La définition des formulaires est longue et fastidieuse La validation des données « à la main » est fastidieuse Noël GUILBERT – Présentation Symfony EPITA
Support avancé des formulaires 22/04/2010 Les support des formulaires permettent d’encapsuler leur cycle de vie complet : Champs de saisies Validation Processus métier : sauvegarde, traitement des données, etc… Intégration avec les ORMs pour la manipulation des données Noël GUILBERT – Présentation Symfony EPITA
Support avancé des formulaires 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA
Support avancé des formulaires 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA
Support avancé des formulaires 22/04/2010 Gestion des erreurs : Noël GUILBERT – Présentation Symfony EPITA
Support avancé des formulaires 22/04/2010 Intégré à la barre de debug: Noël GUILBERT – Présentation Symfony EPITA
Emails avec SwiftMailer 22/04/2010 Symfony est fourni avec une des meilleures solutions en PHP d’emailing : SwiftMailer Cette solution est complètement intégrée avec symfony : Environnements Files d’attente Tests fonctionnels Debuggage Noël GUILBERT – Présentation Symfony EPITA
Emails avec SwiftMailer 22/04/2010 Envoyer un email Noël GUILBERT – Présentation Symfony EPITA
Emails avec SwiftMailer 22/04/2010 Tester l’envoi d’un email Noël GUILBERT – Présentation Symfony EPITA
Emails avec SwiftMailer 22/04/2010 Configuration Stratégies d’envoi Désactivée par défaut dans les environnements de test et de développement  Possibilité de rediriger tous les mails vers une adresse unique Pratique pour tester l’envoi des emails En temps réel En file d’attente Noël GUILBERT – Présentation Symfony EPITA
Emails avec SwiftMailer 22/04/2010 L’envoi des emails est intégré à la barre de debug Noël GUILBERT – Présentation Symfony EPITA
Générateur de Back-Office Générationautomatiqued’interfacesd’administration : Listes Pagination Tris CRUD Filtres Validation Pourquoi ? Tous les sites ont un back-office Fastidieux à développer et à tester Aucune valeur ajoutée pour le développeur Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Générateur de Back-Office Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
22/04/2010 Noël GUILBERT – Présentation Symfony EPITA Démonstration
Réalisation d’un back office de gestion des étudiants Lister les étudiants, 10 par page  afficher la photo, nom, prénom et promo de chaqueétudiant Trier par défaut les étudiants par ordrealphabétique Moteur de recherche multi-critères Formulaires de création et d’édition Upload de photo Validation des données saisies Suppression d’un étudiant Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Demo terminée! 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA
Symfony : que nous réserve l’avenir ? Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
22/04/2010 Noël GUILBERT – Présentation Symfony EPITA Une évolution majeure de symfony 1.x : Full stack Configurable Extensible Testable Une nouvelle architecture: Utilisation des nouveautés de PHP 5.3
Symfony 2 : ne pas réinventer la roue Réutilisation des meilleurs composants du monde Open-Source : Doctrine 2  PHPUnit SwiftMailer Zend_Log Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
PHP 5.3 Namespaces Closures / Lambda functions Late state binding Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
Symfony 2 : Quelles nouveautés ? 22/04/2010 Meilleures performances Composants autonomes Injection de dépendance Request Handler Bundles Noël GUILBERT – Présentation Symfony EPITA
Symfony 2 : Plus rapide ? 22/04/2010 Symfony 2 est 2,5x plus rapide que symfony 1.4.x … et environ 60x plus rapide que Flow 3 (en version alpha) http://symfony-reloaded.org/fast Noël GUILBERT – Présentation Symfony EPITA
Symfony Components 22/04/2010 Librairies autonomes Chaque composant à un périmètre et une documentation spécifique http://components.symfony-project.org/  Noël GUILBERT – Présentation Symfony EPITA
Symfony Components 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA BrowserKit Console CssSelector DependencyInjection DomCrawler EventDispatcher Finder OutputEscaper Process RequestHandler Templating Yaml
Injection de dépendance 22/04/2010 Permet de gérer les dépendances entre les classes de votre projet Inspiré par le framework Java Spring Documentation : http://components.symfony-project.org/dependency-injection/ Noël GUILBERT – Présentation Symfony EPITA
Injection de dépendance 22/04/2010 <?php class User { protected $storage;     public function__construct(Storage $storage)     {         $this->storage = $storage;     } } Noël GUILBERT – Présentation Symfony EPITA
Conteneur d’Injection de dépendance 22/04/2010 Une méthode pour organiser les dépendances Chaque classe est un service, que l’on peut définir au format YAML : Noël GUILBERT – Présentation Symfony EPITA services:    user:      class: User      arguments: [@user.storage] user.storage:       class: Storage
Conteneur d’Injection de dépendance 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA
Request Handler 22/04/2010 Micro-kernel très rapide pour le développement de framework d’application web Noël GUILBERT – Présentation Symfony EPITA
Request Handler 22/04/2010 A la base de l’implémentation des contrôleurs dans Symfony 2 Concept très simple: Le point d’entrée est une requête Le point de sortie est une réponse La requête peut être ce que vous voulez L’objet réponse doit implémenter une méthode send() Noël GUILBERT – Présentation Symfony EPITA
Request Handler 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA
Les bundles 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA Les bundles sont l’équivalent des plugins dans symfony 1.x Tout est bundle: Symfony est un bundle Le code de votre application sera dans un bundle Une application est un ensemble de bundles
Les bundles 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA Les bundles sont configuré dans le kernel de l’application
Bundles 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA Springbok : ticketing system http://github.com/naneau/springbok/
Bundles 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA Shopping cart http://github.com/noelguilbert/symfony-demo
Sensio Labs Recrute ! 22/04/2010 Chefs de projets web Développeurs Stages CDI Envoyez votre CV à job@sensio.com Noël GUILBERT – Présentation Symfony EPITA
Questions ? Noël GUILBERT http://www.noelguilbert.com/ @noelguilbert 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA

Contenu connexe

Tendances

Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2Ahmed ABATAL
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfonyJeremy Gachet
 
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
 
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
 
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
 
Presentation Symfony
Presentation SymfonyPresentation Symfony
Presentation SymfonyJeremy Gachet
 
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
 
Symfony2 Presentation
Symfony2 PresentationSymfony2 Presentation
Symfony2 Presentationyllieth
 
symfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnelssymfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les ProfessionnelsFabien Potencier
 
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
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonyVincent Composieux
 
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
 
Utiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec SymfonyUtiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec SymfonyXavier Gorse
 
Atelier symfony n 1
Atelier symfony n 1Atelier symfony n 1
Atelier symfony n 1Amir Souissi
 
Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]Wixiweb
 
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
 

Tendances (20)

Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfony
 
Symfony 2 et le Web
Symfony 2 et le WebSymfony 2 et le Web
Symfony 2 et le Web
 
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
 
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
 
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
 
Presentation Symfony
Presentation SymfonyPresentation Symfony
Presentation Symfony
 
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
 
Symfony2 Presentation
Symfony2 PresentationSymfony2 Presentation
Symfony2 Presentation
 
symfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnelssymfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnels
 
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
 
Formation Symfony2 par KNP Labs
Formation Symfony2 par KNP LabsFormation Symfony2 par KNP Labs
Formation Symfony2 par KNP Labs
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
 
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
 
Utiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec SymfonyUtiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec Symfony
 
PHP5 et Zend Framework
PHP5 et Zend FrameworkPHP5 et Zend Framework
PHP5 et Zend Framework
 
Symfony
SymfonySymfony
Symfony
 
Atelier symfony n 1
Atelier symfony n 1Atelier symfony n 1
Atelier symfony n 1
 
Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]
 
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)
 

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
 
PHP 5 pour les développeurs Java
PHP 5 pour les développeurs JavaPHP 5 pour les développeurs Java
PHP 5 pour les développeurs JavaMehdi EL KRARI
 
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEMarouan OMEZZINE
 
Introduction à Laravel 4 @Dogstudio
Introduction à Laravel 4 @DogstudioIntroduction à Laravel 4 @Dogstudio
Introduction à Laravel 4 @DogstudioNicolas Widart
 
PHP 5.3, PHP Next
PHP 5.3, PHP NextPHP 5.3, PHP Next
PHP 5.3, PHP NextSQLI
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapBassem ABCHA
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5halleck45
 

En vedette (10)

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
 
PHP 5 pour les développeurs Java
PHP 5 pour les développeurs JavaPHP 5 pour les développeurs Java
PHP 5 pour les développeurs Java
 
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
 
Presentation symfony
Presentation symfonyPresentation symfony
Presentation symfony
 
Php
PhpPhp
Php
 
Introduction à Laravel 4 @Dogstudio
Introduction à Laravel 4 @DogstudioIntroduction à Laravel 4 @Dogstudio
Introduction à Laravel 4 @Dogstudio
 
PHP 5.3, PHP Next
PHP 5.3, PHP NextPHP 5.3, PHP Next
PHP 5.3, PHP Next
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrap
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5
 
Php 5.3
Php 5.3Php 5.3
Php 5.3
 

Similaire à Présentation symfony epita

L'e-commerce sans accroc avec Sylius
L'e-commerce sans accroc avec SyliusL'e-commerce sans accroc avec Sylius
L'e-commerce sans accroc avec SyliusOlivier ALLAIN
 
Alphorm.com Formation GLPI: Installation et Adminisration
Alphorm.com Formation GLPI: Installation et AdminisrationAlphorm.com Formation GLPI: Installation et Adminisration
Alphorm.com Formation GLPI: Installation et AdminisrationAlphorm
 
Quid de vos applications symfony 1
Quid de vos applications symfony 1Quid de vos applications symfony 1
Quid de vos applications symfony 1marchugon
 
Back bee symfonyliveparis2015
Back bee symfonyliveparis2015Back bee symfonyliveparis2015
Back bee symfonyliveparis2015Mickaël Andrieu
 
BackBee - the next gen Content Manager (SymfonyLive 2015)
BackBee - the next gen Content Manager (SymfonyLive 2015)BackBee - the next gen Content Manager (SymfonyLive 2015)
BackBee - the next gen Content Manager (SymfonyLive 2015)Mickaël Andrieu
 
Alphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec OdooHassan WAHSISS
 
Symfony 4 2019
Symfony 4 2019Symfony 4 2019
Symfony 4 2019Eric Para
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! frameworkBenoît Simard
 
Lotus Symphony Family
Lotus Symphony Family Lotus Symphony Family
Lotus Symphony Family Vincent Perrin
 
IBM i: Built for Business - Philippe Bourgeois
IBM i: Built for Business - Philippe BourgeoisIBM i: Built for Business - Philippe Bourgeois
IBM i: Built for Business - Philippe BourgeoisFresche Solutions
 
Retour sur la version 1.3 de PrestaShop
Retour sur la version 1.3 de PrestaShopRetour sur la version 1.3 de PrestaShop
Retour sur la version 1.3 de PrestaShopPrestaShop
 
alphorm.com - Formation Configuration Exchange 2010 (70-662)
alphorm.com - Formation Configuration Exchange 2010 (70-662)alphorm.com - Formation Configuration Exchange 2010 (70-662)
alphorm.com - Formation Configuration Exchange 2010 (70-662)Alphorm
 
WebExtensions : Où en est-on ? /// Where we are ?
WebExtensions : Où en est-on ? /// Where we are ?WebExtensions : Où en est-on ? /// Where we are ?
WebExtensions : Où en est-on ? /// Where we are ?Christophe Villeneuve
 
SfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-like
SfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-likeSfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-like
SfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-likeTristan Maindron
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureMarc Nazarian
 

Similaire à Présentation symfony epita (20)

L'e-commerce sans accroc avec Sylius
L'e-commerce sans accroc avec SyliusL'e-commerce sans accroc avec Sylius
L'e-commerce sans accroc avec Sylius
 
Alphorm.com Formation GLPI: Installation et Adminisration
Alphorm.com Formation GLPI: Installation et AdminisrationAlphorm.com Formation GLPI: Installation et Adminisration
Alphorm.com Formation GLPI: Installation et Adminisration
 
Quid de vos applications symfony 1
Quid de vos applications symfony 1Quid de vos applications symfony 1
Quid de vos applications symfony 1
 
Back bee symfonyliveparis2015
Back bee symfonyliveparis2015Back bee symfonyliveparis2015
Back bee symfonyliveparis2015
 
BackBee - the next gen Content Manager (SymfonyLive 2015)
BackBee - the next gen Content Manager (SymfonyLive 2015)BackBee - the next gen Content Manager (SymfonyLive 2015)
BackBee - the next gen Content Manager (SymfonyLive 2015)
 
Alphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et Administration
 
Silverlight 4
Silverlight 4Silverlight 4
Silverlight 4
 
Sylius en 5 minutes
Sylius en 5 minutesSylius en 5 minutes
Sylius en 5 minutes
 
Plici - PréSentation V2
Plici - PréSentation V2Plici - PréSentation V2
Plici - PréSentation V2
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec Odoo
 
Symfony 4 2019
Symfony 4 2019Symfony 4 2019
Symfony 4 2019
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! framework
 
Lotus Symphony Family
Lotus Symphony Family Lotus Symphony Family
Lotus Symphony Family
 
IBM i: Built for Business - Philippe Bourgeois
IBM i: Built for Business - Philippe BourgeoisIBM i: Built for Business - Philippe Bourgeois
IBM i: Built for Business - Philippe Bourgeois
 
Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015
 
Retour sur la version 1.3 de PrestaShop
Retour sur la version 1.3 de PrestaShopRetour sur la version 1.3 de PrestaShop
Retour sur la version 1.3 de PrestaShop
 
alphorm.com - Formation Configuration Exchange 2010 (70-662)
alphorm.com - Formation Configuration Exchange 2010 (70-662)alphorm.com - Formation Configuration Exchange 2010 (70-662)
alphorm.com - Formation Configuration Exchange 2010 (70-662)
 
WebExtensions : Où en est-on ? /// Where we are ?
WebExtensions : Où en est-on ? /// Where we are ?WebExtensions : Où en est-on ? /// Where we are ?
WebExtensions : Où en est-on ? /// Where we are ?
 
SfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-like
SfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-likeSfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-like
SfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-like
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 

Présentation symfony epita

  • 1. Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 2. Symfony, qu’est-ce que c’est ? Un framework PHP 5 Open-Source Issu de l’expérience de Sensio Labs dans le développement d’application web Ensemble d’outils conçus pour faciliter les développements et éviter les tâches répétitives Destiné aux professionnels Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 3. Sensio Labs Web agency 70 personnesdédiéesau développementWeb Spécialistes de l’Open-Source Noël GUILBERT – Présentation Symfony EPITA 22/04/2010 Internet Technologies Sensio Web Agency Webmarketing Creator of the symfony framework
  • 4. Symfony, ce n’est pas que du code Une documentation Open-source : Plusieurs livres officiels : Practical Symfony (350 pages) The Reference guide (150 pages) More with Symfony (320 pages, disponibles en 5 langues) Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 5. Symfony, ce n’est pas que du code Des ouvrages dans différents pays: Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 6. Symfony, ce n’est pas que du code Différents évènements et conférences : Symfony camp, Symfony day, Symfony Live, sprints, bug huntdays, … Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 7. Une version « entreprise »: Version 1.4 : supportée pendant 3 ans (jusqu’à fin 2012) Environ une release par mois: Correction de bugs Pas de nouvelle fonctionnalité La mise à jour est simple et sans danger La migration depuis une version antérieure est simple Support commercial Documentation stable et maintenue Formations Conseil Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 8. Objectifs Développer plus vite, et surtout mieux Promouvoir l’utilisation de bonnes pratiques de développement Réaliser des applications évolutives et maintenables Se concentrer uniquement sur la logique métier Ne pas réinventer la roue Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 9. Développer plus vite Ecrire moins de code Plus de temps pour la logique métier, les cas limites, … Moins de code  Moins de complexité  Moins de bugs  Plus de productivité  Plus de temps Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 10. Fonctionnalités Architecture MVC Internationalisation / Localisation ORM Support avancé des formulaires Sécurité Gestion des environnements Outils de développement et de debug Configurable et extensible Cache Générateur d’interface d’administration Tests unitaires et fonctionnels URLs « propres » CLI Emails Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 11. Architecture MVC Noël GUILBERT – Présentation Symfony EPITA 3 couches logiques : Model: logique métier View : présentation Controller: logique applicative Avantages : Meilleure encapsulation Code réutilisable Testable unitairement Robuste client server internet controller view model Response 22/04/2010
  • 12. Url propres Symfony gère les URLs propres Pourquoi ? SEO « user-friendly » Masque l’implémentation technique Noël GUILBERT – Présentation Symfony EPITA /blog.php?section=symfony&article_id=18475 /blog/2010-04-22/symfony-a-l-epita 22/04/2010
  • 13. Outils pour le développeur Symfony est fourni avec des outils de débogage Pourquoi ? Faciliter le débogage Améliorer la productivité du développeur Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 14. CLI Symfony possède un certain nombre d’outils en ligne de commande pour faciliter le développement: Génération de code Exécution des tests fonctionnels et unitaires Génération de la base de données Installation de plugins Configurations diverses Déploiements Etc… Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 15. CLI $> php symfony Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 16. Configurable et extensible Symfony est configurable et facilement extensible Système de plugins Pourquoi ? Le web évolue vite Chaque projet a des besoins spécifiques Un framework ne peut, et ne doit pas tout faire Faciliter les contributions externes Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 17. Sécurité Symfony est protégé par défaut contre les principales vulnérabilités : Injection SQL XSS (Cross-site Scripting) CSRF (Cross Site Request Forgeries) Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 18. Environnements Symfony dispose d’une notion d’environnements : Développement Test Production Pourquoi ? Le développeur doit pouvoir diagnostiquer les problèmes rapidement: barre de debug, erreurs, etc… Le site en production doit avoir le cache activé, masquer les informations sensibles en cas de problème, … Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 19. Tests fonctionnels et unitaires Symfony dispose d’un framework de test unitaire spécialement adapté : Lime Symfony automatise les tests des applications par la simulation d’un navigateur Pourquoi ? Les tests manuels ne sont pas fiables et reproductibles Une application testée contient moins de bugs Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 20. Cache symfony gère de façon très fine le cache des applications Plusieurs mécanismes de cache sont supportés :fichier, APC, memcache, … Permet d’améliorer la scalabilité des applications rapidement Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 21. I18N et L10N Symfony possède nativement un support de l’I18N et de la L10N Facilite l’internationalisation des applications Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 22. Object RelationalMapping Réalise le mapping entre une base de donnée relationnelle et un modèle orienté objet Couche d’abstraction de base de données Manipulation de base de données à travers une interface orientée objet Deux ORMs sont disponibles : Doctrine et Propel Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 23. Abstraction de base de données Chaque SGBD a ses spécificités Permet de basculer d’un SGBD à un autre facilement Vous n’avez plus de SQL à écrire ! Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 24. Doctrine et Propel Bien intégrés à Symfony : Configuration en YAML Ligne de commandes I18n Admin-generator Documentation Tutoriels Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 25. Décrire la structure de votre base de données Noël GUILBERT – Présentation Symfony EPITA 22/04/2010 ShopProduct: actAs: Timestampable: ~ Sluggable: fields: [reference, name] columns: reference: { type: string(15), notnull: true, unique: true } name: { type: string(100), notnull: true } description: { type: clob, notnull: true } stock: { type: integer(4), notnull: true, default: 0 } price: { type: float, notnull: true } Nom de la classe Comportements automatiques Définition des colonnes
  • 26. Du schéma à la base de données Noël GUILBERT – Présentation Symfony EPITA 22/04/2010 ShopProduct: columns: name: type: string(100), notnull: true CREATE TABLE shop_product ( id integer NOT NULL PRIMARY KEY AUTO_INCREMENT, namevarchar(100) NOT NULL );
  • 27. Des objets à la base de données Noël GUILBERT – Présentation Symfony EPITA 22/04/2010 INSERT INTO shop_product (‘reference’, ‘name’, ‘price’) VALUE (‘AZERTY’, ‘Blue couch’, 299.9); UPDATE shop_product set name = ‘Redcouch’ WHERE id = 1;
  • 28. Intégré à la barre de debug Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 29. Support avancé des formulaires 22/04/2010 Symfony a une gestion des formulaires très avancée et très modulaire Toutes les applications ont des formulaires La définition des formulaires est longue et fastidieuse La validation des données « à la main » est fastidieuse Noël GUILBERT – Présentation Symfony EPITA
  • 30. Support avancé des formulaires 22/04/2010 Les support des formulaires permettent d’encapsuler leur cycle de vie complet : Champs de saisies Validation Processus métier : sauvegarde, traitement des données, etc… Intégration avec les ORMs pour la manipulation des données Noël GUILBERT – Présentation Symfony EPITA
  • 31. Support avancé des formulaires 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA
  • 32. Support avancé des formulaires 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA
  • 33. Support avancé des formulaires 22/04/2010 Gestion des erreurs : Noël GUILBERT – Présentation Symfony EPITA
  • 34. Support avancé des formulaires 22/04/2010 Intégré à la barre de debug: Noël GUILBERT – Présentation Symfony EPITA
  • 35. Emails avec SwiftMailer 22/04/2010 Symfony est fourni avec une des meilleures solutions en PHP d’emailing : SwiftMailer Cette solution est complètement intégrée avec symfony : Environnements Files d’attente Tests fonctionnels Debuggage Noël GUILBERT – Présentation Symfony EPITA
  • 36. Emails avec SwiftMailer 22/04/2010 Envoyer un email Noël GUILBERT – Présentation Symfony EPITA
  • 37. Emails avec SwiftMailer 22/04/2010 Tester l’envoi d’un email Noël GUILBERT – Présentation Symfony EPITA
  • 38. Emails avec SwiftMailer 22/04/2010 Configuration Stratégies d’envoi Désactivée par défaut dans les environnements de test et de développement Possibilité de rediriger tous les mails vers une adresse unique Pratique pour tester l’envoi des emails En temps réel En file d’attente Noël GUILBERT – Présentation Symfony EPITA
  • 39. Emails avec SwiftMailer 22/04/2010 L’envoi des emails est intégré à la barre de debug Noël GUILBERT – Présentation Symfony EPITA
  • 40. Générateur de Back-Office Générationautomatiqued’interfacesd’administration : Listes Pagination Tris CRUD Filtres Validation Pourquoi ? Tous les sites ont un back-office Fastidieux à développer et à tester Aucune valeur ajoutée pour le développeur Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 41. Générateur de Back-Office Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 42. 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA Démonstration
  • 43. Réalisation d’un back office de gestion des étudiants Lister les étudiants, 10 par page afficher la photo, nom, prénom et promo de chaqueétudiant Trier par défaut les étudiants par ordrealphabétique Moteur de recherche multi-critères Formulaires de création et d’édition Upload de photo Validation des données saisies Suppression d’un étudiant Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 44. Demo terminée! 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA
  • 45. Symfony : que nous réserve l’avenir ? Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 46. 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA Une évolution majeure de symfony 1.x : Full stack Configurable Extensible Testable Une nouvelle architecture: Utilisation des nouveautés de PHP 5.3
  • 47. Symfony 2 : ne pas réinventer la roue Réutilisation des meilleurs composants du monde Open-Source : Doctrine 2 PHPUnit SwiftMailer Zend_Log Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 48. PHP 5.3 Namespaces Closures / Lambda functions Late state binding Noël GUILBERT – Présentation Symfony EPITA 22/04/2010
  • 49. Symfony 2 : Quelles nouveautés ? 22/04/2010 Meilleures performances Composants autonomes Injection de dépendance Request Handler Bundles Noël GUILBERT – Présentation Symfony EPITA
  • 50. Symfony 2 : Plus rapide ? 22/04/2010 Symfony 2 est 2,5x plus rapide que symfony 1.4.x … et environ 60x plus rapide que Flow 3 (en version alpha) http://symfony-reloaded.org/fast Noël GUILBERT – Présentation Symfony EPITA
  • 51. Symfony Components 22/04/2010 Librairies autonomes Chaque composant à un périmètre et une documentation spécifique http://components.symfony-project.org/ Noël GUILBERT – Présentation Symfony EPITA
  • 52. Symfony Components 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA BrowserKit Console CssSelector DependencyInjection DomCrawler EventDispatcher Finder OutputEscaper Process RequestHandler Templating Yaml
  • 53. Injection de dépendance 22/04/2010 Permet de gérer les dépendances entre les classes de votre projet Inspiré par le framework Java Spring Documentation : http://components.symfony-project.org/dependency-injection/ Noël GUILBERT – Présentation Symfony EPITA
  • 54. Injection de dépendance 22/04/2010 <?php class User { protected $storage; public function__construct(Storage $storage) { $this->storage = $storage; } } Noël GUILBERT – Présentation Symfony EPITA
  • 55. Conteneur d’Injection de dépendance 22/04/2010 Une méthode pour organiser les dépendances Chaque classe est un service, que l’on peut définir au format YAML : Noël GUILBERT – Présentation Symfony EPITA services: user: class: User arguments: [@user.storage] user.storage: class: Storage
  • 56. Conteneur d’Injection de dépendance 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA
  • 57. Request Handler 22/04/2010 Micro-kernel très rapide pour le développement de framework d’application web Noël GUILBERT – Présentation Symfony EPITA
  • 58. Request Handler 22/04/2010 A la base de l’implémentation des contrôleurs dans Symfony 2 Concept très simple: Le point d’entrée est une requête Le point de sortie est une réponse La requête peut être ce que vous voulez L’objet réponse doit implémenter une méthode send() Noël GUILBERT – Présentation Symfony EPITA
  • 59. Request Handler 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA
  • 60. Les bundles 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA Les bundles sont l’équivalent des plugins dans symfony 1.x Tout est bundle: Symfony est un bundle Le code de votre application sera dans un bundle Une application est un ensemble de bundles
  • 61. Les bundles 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA Les bundles sont configuré dans le kernel de l’application
  • 62. Bundles 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA Springbok : ticketing system http://github.com/naneau/springbok/
  • 63. Bundles 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA Shopping cart http://github.com/noelguilbert/symfony-demo
  • 64. Sensio Labs Recrute ! 22/04/2010 Chefs de projets web Développeurs Stages CDI Envoyez votre CV à job@sensio.com Noël GUILBERT – Présentation Symfony EPITA
  • 65. Questions ? Noël GUILBERT http://www.noelguilbert.com/ @noelguilbert 22/04/2010 Noël GUILBERT – Présentation Symfony EPITA