SlideShare une entreprise Scribd logo
Symfony2
What is Symfony ?
Symfony is a PHP Web Development Framework.
That doesn’t answer your question?
Ok, let’s try that again.
Symfony is a PHP Framework, a Philosophy, and a Community -
all working together in harmony.
Sylvain RAGOT & Eric PARA
Code d’Armor - 19 novembre 2013
I. Introduction Symfonique
1: Symfony en une phrase ...
2: Qui se cache derrière ?
3: Quoi d’autre en PHP ?
4: Alors pourquoi Symfony ?
5: Qui l’utilise ?
II. En avant la musique !
I.0: Petit sondage ...
- qui fait du web régulièrement ?
- qui utilise un framework ?
- PHP ?
- Java ?
- autre ?
- qui a déjà entendu parlé de Symfony?
- qui a déjà essayé ?
- qui pratique régulièrement ?
I.0: Petit sondage ...
- qui fait du web régulièrement ?
- qui utilise un framework ?
- PHP ?
- Java ?
- autre ?
- qui a déjà entendu parlé de Symfony?
- qui a déjà essayé ?
- qui pratique régulièrement ?
I.0: Petit sondage ...
- qui fait du web régulièrement ?
- qui utilise un framework ?
- PHP ?
- Java ?
- autre ?
- qui a déjà entendu parlé de Symfony?
- qui a déjà essayé ?
- qui pratique régulièrement ?
I.0: Petit sondage ...
- qui fait du web régulièrement ?
- qui utilise un framework ?
- PHP ?
- Java ?
- autre ?
- qui a déjà entendu parlé de Symfony?
- qui a déjà essayé ?
- qui pratique régulièrement ?
I.0: Petit sondage ...
- qui fait du web régulièrement ?
- qui utilise un framework ?
- PHP ?
- Java ?
- autre ?
- qui a déjà entendu parlé de Symfony?
- qui a déjà essayé ?
- qui pratique régulièrement ?
I.0: Petit sondage ...
- qui fait du web régulièrement ?
- qui utilise un framework ?
- PHP ?
- Java ?
- autre ?
- qui a déjà entendu parlé de Symfony?
- qui a déjà essayé ?
- qui pratique régulièrement ?
I.0: Petit sondage ...
- qui fait du web régulièrement ?
- qui utilise un framework ?
- PHP ?
- Java ?
- autre ?
- qui a déjà entendu parlé de Symfony?
- qui a déjà essayé ?
- qui pratique régulièrement ?
I.0: Petit sondage ...
- qui fait du web régulièrement ?
- qui utilise un framework ?
- PHP ?
- Java ?
- autre ?
- qui a déjà entendu parlé de Symfony?
- qui a déjà essayé ?
- qui pratique régulièrement ?
I.0: Petit sondage ...
Quel est votre langage préféré pour le Web en 2013 ?
Sondage developpez.com réalisé sur 457 participants
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Améliorer la productivité des développeurs
Nombreuses fonctionnalités disponibles
Existence d’une communauté
(tutoriaux, cours, forums)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
+ Améliorer la productivité des développeurs
Permettre le travail en équipe
Respect de certains patterns
MVC: Modèle-Vue-Contrôleur
Encourager les bonnes pratiques
Don’t reinvent the wheel
DRY: Don’t Repeat Yourself
DIE: Duplication Is Evil
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
+ Améliorer la productivité des développeurs
+ Permettre le travail en équipe
Garantir la maintenance, la sécurité
et l’évolutivité de l’application
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
+ Améliorer la productivité des développeurs
+ Permettre le travail en équipe
+ Garantir la maintenance, la sécurité
et l’évolutivité de l’application
Courbe d'apprentissage souvent élevée
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
+ Améliorer la productivité des développeurs
+ Permettre le travail en équipe
+ Garantir la maintenance, la sécurité
et l’évolutivité de l’application
- Courbe d'apprentissage élevée !
Moyens et gros projets à plusieurs
sinon CMS (Wordpress, Drupal, …)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Langage de script, interprété côté serveur
Performant: systèmes de caches
Langage peu typé et souple
Facile à apprendre par un débutant
Nombreuses fonctions du langage C
Gratuit, libre, simple d'installation
Multiplate-forme (LAMP, WAMP)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Langage de script, interprété côté serveur
Performant: systèmes de caches
Langage peu typé et souple
Facile à apprendre par un débutant
Nombreuses fonctions du langage C
Gratuit, libre, simple d'installation
Multiplate-forme (LAMP, WAMP)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Langage de script, interprété côté serveur
Performant: systèmes de caches
Langage peu typé et souple
Facile à apprendre par un débutant
Nombreuses fonctions du langage C
Gratuit, libre, simple d'installation
Multiplate-forme (LAMP, WAMP)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Langage de script, interprété côté serveur
Performant: systèmes de caches
Langage peu typé et souple
Facile à apprendre par un débutant
Nombreuses fonctions du langage C
Gratuit, libre, simple d'installation
Multiplate-forme (LAMP, WAMP)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Langage de script, interprété côté serveur
Performant: systèmes de caches
Langage peu typé et souple
Facile à apprendre par un débutant
Nombreuses fonctions du langage C
Gratuit, libre, simple d'installation
Multiplate-forme (LAMP, WAMP)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Langage de script, interprété côté serveur
Performant: systèmes de caches
Langage peu typé et souple
Facile à apprendre par un débutant
Nombreuses fonctions du langage C
Gratuit, libre, simple d'installation
Multiplate-forme (LAMP, WAMP)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Langage de script, interprété côté serveur
Performant: systèmes de caches
Langage peu typé et souple
Facile à apprendre par un débutant
Nombreuses fonctions du langage C
Gratuit, libre, simple d'installation
Multiplate-forme (LAMP, WAMP)
Framework de développement Web en PHP
Rasmus Lerdorf, né à Qeqertarsuaq
1994: création, 1995: publication, 1998: reprise
2000: PHP4 réécriture complète => Zend Engine
2004: PHP5 modèle objet => Zend Engine 2
2006: v5.2
2010: v5.3 (namespaces, annotations, archives phar, ...)
2012: v5.4 (traits, serveur web embarqué en CLI, ...)
2013: v5.5 (API de hachage, cache intégré, ...)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Rasmus Lerdorf, né à Qeqertarsuaq
1994: création, 1995: publication, 1998: reprise
2000: PHP4 réécriture complète => Zend Engine
2004: PHP5 modèle objet => Zend Engine 2
2006: v5.2
2010: v5.3 (namespaces, annotations, archives phar, ...)
2012: v5.4 (traits, serveur web embarqué en CLI, ...)
2013: v5.5 (API de hachage, cache intégré, ...)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Rasmus Lerdorf, né à Qeqertarsuaq
1994: création, 1995: publication, 1998: reprise
2000: PHP4 réécriture complète => Zend Engine
2004: PHP5 modèle objet => Zend Engine 2
2006: v5.2
2010: v5.3 (namespaces, annotations, archives phar, ...)
2012: v5.4 (traits, serveur web embarqué en CLI, ...)
2013: v5.5 (API de hachage, cache intégré, ...)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Rasmus Lerdorf, né à Qeqertarsuaq
1994: création, 1995: publication, 1998: reprise
2000: PHP4 réécriture complète => Zend Engine
2004: PHP5 modèle objet => Zend Engine 2
2006: v5.2
2010: v5.3 (namespaces, annotations, archives phar, ...)
2012: v5.4 (traits, serveur web embarqué en CLI, ...)
2013: v5.5 (API de hachage, cache intégré, ...)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Rasmus Lerdorf, né à Qeqertarsuaq
1994: création, 1995: publication, 1998: reprise
2000: PHP4 réécriture complète => Zend Engine
2004: PHP5 modèle objet => Zend Engine 2
2006: v5.2
2010: v5.3 (namespaces, annotations, archives phar, ...)
2012: v5.4 (traits, serveur web embarqué en CLI, ...)
2013: v5.5 (API de hachage, cache intégré, ...)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Rasmus Lerdorf, né à Qeqertarsuaq
1994: création, 1995: publication, 1998: reprise
2000: PHP4 réécriture complète => Zend Engine
2004: PHP5 modèle objet => Zend Engine 2
2006: v5.2
2010: PHP6 Unicode
2012: v5.4 (traits, serveur web embarqué en CLI, ...)
2013: v5.5 (API de hachage, cache intégré, ...)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Rasmus Lerdorf, né à Qeqertarsuaq
1994: création, 1995: publication, 1998: reprise
2000: PHP4 réécriture complète => Zend Engine
2004: PHP5 modèle objet => Zend Engine 2
2006: v5.2
2010: v5.3 (namespaces, annotations, archives phar, ...)
2012: v5.4 (traits, serveur web embarqué en CLI, ...)
2013: v5.5 (API de hachage, cache intégré, ...)
I.1: Symfony en une phrase ...
Framework de développement Web en PHP
Rasmus Lerdorf, né à Qeqertarsuaq
1994: création, 1995: publication, 1998: reprise
2000: PHP4 réécriture complète => Zend Engine
2004: PHP5 modèle objet => Zend Engine 2
2006: v5.2
2010: v5.3 (namespaces, annotations, archives phar, ...)
2012: v5.4 (traits, serveur web embarqué en CLI, ...)
2013: v5.5 (API de hachage, cache intégré, ...)
I.1: Symfony en une phrase ...
I.2: Qui se cache derrière ?
Web agency Française : Sensio [1998]
Fabien Potencier, lead développeur
Sensio Framework [dès 2000]
Symfony 1.0 [2005] => 1.4 [2010]
Symfony 2.0 [été 2011] => 2.3 [été 2013]
I.2: Qui se cache derrière ?
Web agency Française : Sensio [1998]
Fabien Potencier, lead développeur
Sensio Framework [dès 2000]
Symfony 1.0 [2005] => 1.4 [2010]
Symfony 2.0 [été 2011] => 2.3 [été 2013]
I.2: Qui se cache derrière ?
Web agency Française : Sensio [1998]
Fabien Potencier, lead développeur
Sensio Framework [dès 2000]
Symfony 1.0 [2005] => 1.4 [2010]
Symfony 2.0 [été 2011] => 2.3 [été 2013]
I.2: Qui se cache derrière ?
Web agency Française : Sensio [1998]
Fabien Potencier, lead développeur
Sensio Framework [dès 2000]
Symfony 1.0 [2005] => 1.4 [2010]
Symfony 2.0 [été 2011] => 2.3 [été 2013]
I.2: Qui se cache derrière ?
Aux débuts du web il y eu PHP …
I.3: Quoi d’autre en PHP ?
Aux débuts du web il y eu PHP …
Très simple, mais limité
I.3: Quoi d’autre en PHP ?
I.3: Quoi d’autre en PHP ?
Aux débuts du web il y eu PHP …
Très simple, mais limité
Dispose de l'essentiel pour la plus part
des projets, de plus en plus connu
I.3: Quoi d’autre en PHP ?
Aux débuts du web il y eu PHP …
Très simple, mais limité
Dispose de l'essentiel pour la plus part
des projets, de plus en plus connu
Très complet mais complexe
Grosse communauté
“Symfony is not a framework but a project”
Framework entièrement modulaire
Composants ‘systèmes’ de bases
(routing, http, moteur de rendu, …)
Bundles
découpage de l’application en fonctionnalités
Indépendance et donc partage
I.4: Alors pourquoi Symfony ?
I.4: Alors pourquoi Symfony ?
“Symfony is not a framework but a project”
Framework entièrement modulaire:
Composants ‘systèmes’ natifs
(routing, http, moteur de rendu, …)
Bundles
découpage de l’application en fonctionnalités
Indépendance et donc partage
I.4: Alors pourquoi Symfony ?
“Symfony is not a framework but a project”
Framework entièrement modulaire:
Composants ‘systèmes’ de bases
(routing, http, moteur de rendu, …)
Bundles
découpage de l’application en fonctionnalités
Indépendance et donc partage
I.4: Alors pourquoi Symfony ?
“Symfony is not a framework but a project”
Framework entièrement modulaire:
Composants ‘systèmes’ de bases
(routing, http, moteur de rendu, …)
Bundles
découpage de l’application en fonctionnalités
Indépendance et donc partage
I.4: Alors pourquoi Symfony ?
L'un des plus flexibles et des plus puissants
Gros efforts fait sur les performances
Stabilité mais évolution constante
Grande réputation professionnelle
Existence d’une grosse communauté
Internationale et Française
Distribué sous licence Open Source MIT
I.4: Alors pourquoi Symfony ?
L'un des plus flexibles et des plus puissants
Gros efforts fait sur les performances
Stabilité mais évolution constante
Grande réputation professionnelle
Existence d’une grosse communauté
Internationale et Française
Distribué sous licence Open Source MIT
I.4: Alors pourquoi Symfony ?
L'un des plus flexibles et des plus puissants
Gros efforts fait sur les performances
Stabilité mais évolution constante
Grande réputation professionnelle
Existence d’une grosse communauté
Internationale et Française
Distribué sous licence Open Source MIT
I.4: Alors pourquoi Symfony ?
L'un des plus flexibles et des plus puissants
Gros efforts fait sur les performances
Stabilité mais évolution constante
Grande réputation professionnelle
Existence d’une grosse communauté
Internationale et Française
Distribué sous licence Open Source MIT
I.5: Qui utilise Symfony ?
II. En avant la musique !
1: Téléchargement, Installation, Hello world !
2: Structure d’un projet Symfony2
3: Génération de code (CRUD)
4: Principaux composants
Barre de débug, enrobage des exceptions
Twig (moteur de rendu)
Doctrine (base de données)
Forms
Services et Injection de dépendances
II.1: Installation
Créer un projet symfony2
avec composer
http://getcomposer.org/
https://github.com/composer/composer
C’est quoi ? un fichier .phar
Ça sert à quoi ? gérer les bibliothèques et les dépendances
… et ça marche du tonnerre !
# télécharger composer
$ curl -sS https://getcomposer.org/installer | php
# créer un projer Symfony2
$ php composer.phar create-project symfony/framework-standard-edition ./
<code />
II.2: Structure d’un projet Symfony2
● les bundles
● les environnements
● le format YAML (YAML Ain't Markup Language)
● les namespaces
namespace AcmeDemoBundleController;
● best practices : http://symfony.com/fr/doc/current/cookbook/bundles/best_practices.html
Contrôleurs Ressources Web
Extensions du Conteneur de Services Fichiers de traduction
Listeners d’évènements Templates
Configuration Tests unitaires & fonctionnels
II.3: Génération de code
Ce qu’on va faire :
: en 4 commandes
II.3: Génération de code
Étape 1 : récupérer les informations en base
● structure des tables
● relations
● crée des meta-données au format xml (yml)
$ php app/console
doctrine:mapping:convert
xml
./src/Acme/DemoBundle/Resources/config/doctrine/metadata/orm
--from-database --force
<code />
Étape 2 : créer les Entity (avec le mapping)
Qu’est-ce qu’une entité ?
II.3: Génération de code
$ php app/console doctrine:mapping:import AcmeDemoBundle annotation
<code />
class Article {
private $id;
private $id_auteur;
/**
* @ORMColumn(name="titre", type="string")
*/
private $titre;
…
public function getTitre()
{ … }
public function setTitre()
{ … }
}
Étape 3 : Finalisation
● Générer les accesseurs
● Assurer la cohérence du modèle
attention à cette commande en production !
II.3: Génération de code
$ php app/console doctrine:generate:entities AcmeDemoBundle
<code />
$ php app/console doctrine:schema:update --dump-sql
$ php app/console doctrine:schema:update --force
<code />
Étape 4 : Générer des modules CRUD
● CRUD = Create, Read, Update, Delete
● pratique au début pour jouer avec le code
● on va générer 3 choses :
○ des vues
○ des contrôleurs
○ des formulaires
II.3: Génération de code
$ php app/console doctrine:generate:crud
<code />
II.4.1: Aide au debuggage
Barre de debug
● Timeline
● Requêtes exécutées
● Limite : appels AJAX (possibilité d’accès dynamique la barre)
Enrobage des exceptions
II.4.2: Twig, un moteur de rendu
● plus aucune balise <?php ?> dans les vues
● une syntaxe simple et TRES efficace
● extensible
● héritage de tempates
● composant indépendant de Symfony
● http://twig.sensiolabs.org/
II.4.2: Twig, un moteur de rendu
L’annotation @Route
● Permet de nommer la route
● Indique à la vue quel action utiliser
L’annotation @Method
● Précise le type de requête HTTP (GET, POST)
L’annotation @Template
● Indique au contrôleur quelle vue utiliser
● Peut être omise (Symfony va essayer de deviner)
● Peut indiquer le langage (TWIG ou PHP)
II.4.3: Doctrine = DBAL + ORM
● Plusieurs ORM
● Plusieurs SGBD
○ MySQL, PgSQL, SQLlite (PDO)
○ Oracle (OCI)
● Des annotations pour décrire la structure
● Un langage (Doctrine Query Language)
● Des requêtes “magiques”
● Des accesseurs “intelligents”
Dans une vue, je souhaite afficher une information d’une
table liée (jointure) :
○ L’information est présente dans l’entité : je l’utilise
○ L’information est absente de l’entité : on la récupère
II.4.3: Doctrine = DBAL + ORM
// Contrôleur
$article = $this->getDoctrine()
->getRepository('AcmeDemoBundle:Article ')
->find($id);
$article = $this->getDoctrine()
->getRepository('AcmeDemoBundle:Article ')
->findOneByTitle('Symfony2');
<code />
II.4.4: La gestion des formulaires
● composant indépendant de Symfony
● 2 types de formulaires
○ liés à une entité (persistance du contenu en base)
○ indépendants
● formulaires imbriqués
● protection CSRF (Cross-Site Request Forgery)
● validation
● Extensions et Types personnalisés
● HTML5
II.4.5: Services
& Injections de dépendances
● Tout (ou presque) est un service
● Permet
○ un haut degrés de factorisation
○ une réutilisation du code
○ des tests
● Peut dépendre d’autre(s) service(s)
// Resources/config/services.yml
syl.helper.membres:
class: "SylCadeauxBundleServicesMembresHelper"
arguments: ["@doctrine.orm.entity_manager"]
calls:
- [ injectMailer, [ " @syl.service.mail" ] ]
<code />
En vrac
● Assetic
● I18N & L10N (XLIFF)
● Mailer (Swiftmailer)
● Tests unitaires et fonctionnels
Fin !
Des Questions ?
mais sans tee-shirt cette fois-ci ...

Contenu connexe

Tendances

Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec Symfony
Hugo Hamon
 
Présentation symfony epita
Présentation symfony epitaPrésentation symfony epita
Présentation symfony epita
Noel GUILBERT
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notes
Xavier 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 Twig
Abdelkader Rhouati
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overview
SymfonyMu
 
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
Philippe Gamache
 
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
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
Noel GUILBERT
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
Hugo Hamon
 
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
Abdelkader Rhouati
 
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
Nicolas Lœuillet
 
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 Labs
KNP Labs
 
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
 
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
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonyVincent Composieux
 
Cologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - VarnishCologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - VarnishD
 
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
 
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
 

Tendances (20)

Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec Symfony
 
Présentation symfony epita
Présentation symfony epitaPrésentation symfony epita
Présentation symfony epita
 
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
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overview
 
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
 
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
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
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
 
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
 
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
 
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)
 
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)
 
PHP5 et Zend Framework
PHP5 et Zend FrameworkPHP5 et Zend Framework
PHP5 et Zend Framework
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
 
Cologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - VarnishCologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - Varnish
 
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)
 
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]
 

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 2
Abdelkader Rhouati
 
Pfe conception et développement d'une application web GMAO JEE
Pfe conception et développement d'une application web GMAO JEEPfe conception et développement d'une application web GMAO JEE
Pfe conception et développement d'une application web GMAO JEEOussama Djerba
 
Symfi formation-symfony-les-bases
Symfi formation-symfony-les-basesSymfi formation-symfony-les-bases
Symfi formation-symfony-les-basesCERTyou Formation
 
PHP 7 et Symfony 3
PHP 7 et Symfony 3PHP 7 et Symfony 3
PHP 7 et Symfony 3
Eddy RICHARD
 
MongoDB and PHP ZendCon 2011
MongoDB and PHP ZendCon 2011MongoDB and PHP ZendCon 2011
MongoDB and PHP ZendCon 2011
Steven Francia
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
RomainKuzniak
 
Projet glpi
Projet glpiProjet glpi
Projet glpi
qfongueuse
 
Les Applications CRM mobile Tunisie Telecom Pour BlackBerry
Les Applications CRM mobile Tunisie Telecom Pour BlackBerryLes Applications CRM mobile Tunisie Telecom Pour BlackBerry
Les Applications CRM mobile Tunisie Telecom Pour BlackBerrytunisieblackberry
 
Git vs svn
Git vs svnGit vs svn
Git vs svn
Suman Mukherjee
 
Symfony2 Introduction Presentation
Symfony2 Introduction PresentationSymfony2 Introduction Presentation
Symfony2 Introduction Presentation
Nerd Tzanetopoulos
 
Système de gestion de tickets
Système de gestion de ticketsSystème de gestion de tickets
Système de gestion de ticketsraymen87
 
Simulation d'un réseau BSS dans la commune d'arrondissement de Douala 5e
Simulation d'un réseau BSS dans la commune d'arrondissement de Douala 5eSimulation d'un réseau BSS dans la commune d'arrondissement de Douala 5e
Simulation d'un réseau BSS dans la commune d'arrondissement de Douala 5e
Jeff Hermann Ela Aba
 
Symfony in microservice architecture
Symfony in microservice architectureSymfony in microservice architecture
Symfony in microservice architecture
Daniele D'Angeli
 
GIT / SVN
GIT / SVNGIT / SVN
GIT / SVN
Torben Brodt
 
radius
radiusradius
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5
Kristen Le Liboux
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
Hugo Hamon
 

En vedette (19)

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
 
Pfe conception et développement d'une application web GMAO JEE
Pfe conception et développement d'une application web GMAO JEEPfe conception et développement d'une application web GMAO JEE
Pfe conception et développement d'une application web GMAO JEE
 
Symfi formation-symfony-les-bases
Symfi formation-symfony-les-basesSymfi formation-symfony-les-bases
Symfi formation-symfony-les-bases
 
PHP 7 et Symfony 3
PHP 7 et Symfony 3PHP 7 et Symfony 3
PHP 7 et Symfony 3
 
Presentation symfony
Presentation symfonyPresentation symfony
Presentation symfony
 
MongoDB and PHP ZendCon 2011
MongoDB and PHP ZendCon 2011MongoDB and PHP ZendCon 2011
MongoDB and PHP ZendCon 2011
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 
Projet glpi
Projet glpiProjet glpi
Projet glpi
 
Les Applications CRM mobile Tunisie Telecom Pour BlackBerry
Les Applications CRM mobile Tunisie Telecom Pour BlackBerryLes Applications CRM mobile Tunisie Telecom Pour BlackBerry
Les Applications CRM mobile Tunisie Telecom Pour BlackBerry
 
Git vs svn
Git vs svnGit vs svn
Git vs svn
 
Symfony2 Introduction Presentation
Symfony2 Introduction PresentationSymfony2 Introduction Presentation
Symfony2 Introduction Presentation
 
Système de gestion de tickets
Système de gestion de ticketsSystème de gestion de tickets
Système de gestion de tickets
 
Simulation d'un réseau BSS dans la commune d'arrondissement de Douala 5e
Simulation d'un réseau BSS dans la commune d'arrondissement de Douala 5eSimulation d'un réseau BSS dans la commune d'arrondissement de Douala 5e
Simulation d'un réseau BSS dans la commune d'arrondissement de Douala 5e
 
Symfony in microservice architecture
Symfony in microservice architectureSymfony in microservice architecture
Symfony in microservice architecture
 
GIT / SVN
GIT / SVNGIT / SVN
GIT / SVN
 
radius
radiusradius
radius
 
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5
 
83839589 radius
83839589 radius83839589 radius
83839589 radius
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 

Similaire à Symfony2 Presentation

Symfony 4 2019
Symfony 4 2019Symfony 4 2019
Symfony 4 2019
Eric Para
 
Symfony et le Web
Symfony et le WebSymfony et le Web
Symfony et le Web
Jose Dominique PENDA
 
M205developpemmetdigital123455555555.pdf
M205developpemmetdigital123455555555.pdfM205developpemmetdigital123455555555.pdf
M205developpemmetdigital123455555555.pdf
monirgrich
 
Boostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpeditBoostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpeditauto entrepreneur
 
PHP : Une Plateforme Industrialisable Au Service De L'Agilité
PHP : Une Plateforme Industrialisable Au Service De L'AgilitéPHP : Une Plateforme Industrialisable Au Service De L'Agilité
PHP : Une Plateforme Industrialisable Au Service De L'Agilité
PHPPRO
 
WordPress en 2015 - ForumPHP
WordPress en 2015 - ForumPHPWordPress en 2015 - ForumPHP
WordPress en 2015 - ForumPHP
xavierborderie
 
43_pps.pdf
43_pps.pdf43_pps.pdf
43_pps.pdf
ssuser192642
 
Premier pas en php
Premier pas en phpPremier pas en php
Premier pas en phpHichoam Said
 
Symfony
SymfonySymfony
Symfony
YAZIDI Imran
 
Barcamp tunisie edition 2010 langage de programmation php
Barcamp tunisie edition 2010 langage de programmation php Barcamp tunisie edition 2010 langage de programmation php
Barcamp tunisie edition 2010 langage de programmation php
Barcamp Tunisie
 
Performance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfonyPerformance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfony
Xavier Leune
 
AFUP & PHP @ Supelec
AFUP & PHP @ SupelecAFUP & PHP @ Supelec
AFUP & PHP @ Supelecjulien pauli
 
cours-gratuit.com--coursMySql-id2218.pdf
cours-gratuit.com--coursMySql-id2218.pdfcours-gratuit.com--coursMySql-id2218.pdf
cours-gratuit.com--coursMySql-id2218.pdf
GroupeExcelMarrakech
 
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
Jonathan Bonzy
 
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
 
Actionscript: du web au mobile
Actionscript: du web au mobileActionscript: du web au mobile
Actionscript: du web au mobile
Martin Arvisais
 
PHP, ce truc de vieux
PHP, ce truc de vieuxPHP, ce truc de vieux
PHP, ce truc de vieux
Olivier Mansour
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
julien pauli
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.
Amélie DUVERNET
 

Similaire à Symfony2 Presentation (20)

Symfony 4 2019
Symfony 4 2019Symfony 4 2019
Symfony 4 2019
 
Symfony et le Web
Symfony et le WebSymfony et le Web
Symfony et le Web
 
M205developpemmetdigital123455555555.pdf
M205developpemmetdigital123455555555.pdfM205developpemmetdigital123455555555.pdf
M205developpemmetdigital123455555555.pdf
 
Boostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpeditBoostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpedit
 
PHP : Une Plateforme Industrialisable Au Service De L'Agilité
PHP : Une Plateforme Industrialisable Au Service De L'AgilitéPHP : Une Plateforme Industrialisable Au Service De L'Agilité
PHP : Une Plateforme Industrialisable Au Service De L'Agilité
 
WordPress en 2015 - ForumPHP
WordPress en 2015 - ForumPHPWordPress en 2015 - ForumPHP
WordPress en 2015 - ForumPHP
 
43_pps.pdf
43_pps.pdf43_pps.pdf
43_pps.pdf
 
Premier pas en php
Premier pas en phpPremier pas en php
Premier pas en php
 
Symfony
SymfonySymfony
Symfony
 
Barcamp tunisie edition 2010 langage de programmation php
Barcamp tunisie edition 2010 langage de programmation php Barcamp tunisie edition 2010 langage de programmation php
Barcamp tunisie edition 2010 langage de programmation php
 
Performance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfonyPerformance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfony
 
AFUP & PHP @ Supelec
AFUP & PHP @ SupelecAFUP & PHP @ Supelec
AFUP & PHP @ Supelec
 
cours-gratuit.com--coursMySql-id2218.pdf
cours-gratuit.com--coursMySql-id2218.pdfcours-gratuit.com--coursMySql-id2218.pdf
cours-gratuit.com--coursMySql-id2218.pdf
 
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
 
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
 
Actionscript: du web au mobile
Actionscript: du web au mobileActionscript: du web au mobile
Actionscript: du web au mobile
 
PHP, ce truc de vieux
PHP, ce truc de vieuxPHP, ce truc de vieux
PHP, ce truc de vieux
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
 
Lp web tp3_idse
Lp web tp3_idseLp web tp3_idse
Lp web tp3_idse
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.
 

Symfony2 Presentation

  • 1. Symfony2 What is Symfony ? Symfony is a PHP Web Development Framework. That doesn’t answer your question? Ok, let’s try that again. Symfony is a PHP Framework, a Philosophy, and a Community - all working together in harmony. Sylvain RAGOT & Eric PARA Code d’Armor - 19 novembre 2013
  • 2. I. Introduction Symfonique 1: Symfony en une phrase ... 2: Qui se cache derrière ? 3: Quoi d’autre en PHP ? 4: Alors pourquoi Symfony ? 5: Qui l’utilise ? II. En avant la musique !
  • 3. I.0: Petit sondage ... - qui fait du web régulièrement ? - qui utilise un framework ? - PHP ? - Java ? - autre ? - qui a déjà entendu parlé de Symfony? - qui a déjà essayé ? - qui pratique régulièrement ?
  • 4. I.0: Petit sondage ... - qui fait du web régulièrement ? - qui utilise un framework ? - PHP ? - Java ? - autre ? - qui a déjà entendu parlé de Symfony? - qui a déjà essayé ? - qui pratique régulièrement ?
  • 5. I.0: Petit sondage ... - qui fait du web régulièrement ? - qui utilise un framework ? - PHP ? - Java ? - autre ? - qui a déjà entendu parlé de Symfony? - qui a déjà essayé ? - qui pratique régulièrement ?
  • 6. I.0: Petit sondage ... - qui fait du web régulièrement ? - qui utilise un framework ? - PHP ? - Java ? - autre ? - qui a déjà entendu parlé de Symfony? - qui a déjà essayé ? - qui pratique régulièrement ?
  • 7. I.0: Petit sondage ... - qui fait du web régulièrement ? - qui utilise un framework ? - PHP ? - Java ? - autre ? - qui a déjà entendu parlé de Symfony? - qui a déjà essayé ? - qui pratique régulièrement ?
  • 8. I.0: Petit sondage ... - qui fait du web régulièrement ? - qui utilise un framework ? - PHP ? - Java ? - autre ? - qui a déjà entendu parlé de Symfony? - qui a déjà essayé ? - qui pratique régulièrement ?
  • 9. I.0: Petit sondage ... - qui fait du web régulièrement ? - qui utilise un framework ? - PHP ? - Java ? - autre ? - qui a déjà entendu parlé de Symfony? - qui a déjà essayé ? - qui pratique régulièrement ?
  • 10. I.0: Petit sondage ... - qui fait du web régulièrement ? - qui utilise un framework ? - PHP ? - Java ? - autre ? - qui a déjà entendu parlé de Symfony? - qui a déjà essayé ? - qui pratique régulièrement ?
  • 11. I.0: Petit sondage ... Quel est votre langage préféré pour le Web en 2013 ? Sondage developpez.com réalisé sur 457 participants
  • 12. I.1: Symfony en une phrase ... Framework de développement Web en PHP
  • 13. I.1: Symfony en une phrase ... Framework de développement Web en PHP Améliorer la productivité des développeurs Nombreuses fonctionnalités disponibles Existence d’une communauté (tutoriaux, cours, forums)
  • 14. I.1: Symfony en une phrase ... Framework de développement Web en PHP + Améliorer la productivité des développeurs Permettre le travail en équipe Respect de certains patterns MVC: Modèle-Vue-Contrôleur Encourager les bonnes pratiques Don’t reinvent the wheel DRY: Don’t Repeat Yourself DIE: Duplication Is Evil
  • 15. I.1: Symfony en une phrase ... Framework de développement Web en PHP + Améliorer la productivité des développeurs + Permettre le travail en équipe Garantir la maintenance, la sécurité et l’évolutivité de l’application
  • 16. I.1: Symfony en une phrase ... Framework de développement Web en PHP + Améliorer la productivité des développeurs + Permettre le travail en équipe + Garantir la maintenance, la sécurité et l’évolutivité de l’application Courbe d'apprentissage souvent élevée
  • 17. I.1: Symfony en une phrase ... Framework de développement Web en PHP + Améliorer la productivité des développeurs + Permettre le travail en équipe + Garantir la maintenance, la sécurité et l’évolutivité de l’application - Courbe d'apprentissage élevée ! Moyens et gros projets à plusieurs sinon CMS (Wordpress, Drupal, …)
  • 18. I.1: Symfony en une phrase ... Framework de développement Web en PHP Langage de script, interprété côté serveur Performant: systèmes de caches Langage peu typé et souple Facile à apprendre par un débutant Nombreuses fonctions du langage C Gratuit, libre, simple d'installation Multiplate-forme (LAMP, WAMP)
  • 19. I.1: Symfony en une phrase ... Framework de développement Web en PHP Langage de script, interprété côté serveur Performant: systèmes de caches Langage peu typé et souple Facile à apprendre par un débutant Nombreuses fonctions du langage C Gratuit, libre, simple d'installation Multiplate-forme (LAMP, WAMP)
  • 20. I.1: Symfony en une phrase ... Framework de développement Web en PHP Langage de script, interprété côté serveur Performant: systèmes de caches Langage peu typé et souple Facile à apprendre par un débutant Nombreuses fonctions du langage C Gratuit, libre, simple d'installation Multiplate-forme (LAMP, WAMP)
  • 21. I.1: Symfony en une phrase ... Framework de développement Web en PHP Langage de script, interprété côté serveur Performant: systèmes de caches Langage peu typé et souple Facile à apprendre par un débutant Nombreuses fonctions du langage C Gratuit, libre, simple d'installation Multiplate-forme (LAMP, WAMP)
  • 22. I.1: Symfony en une phrase ... Framework de développement Web en PHP Langage de script, interprété côté serveur Performant: systèmes de caches Langage peu typé et souple Facile à apprendre par un débutant Nombreuses fonctions du langage C Gratuit, libre, simple d'installation Multiplate-forme (LAMP, WAMP)
  • 23. I.1: Symfony en une phrase ... Framework de développement Web en PHP Langage de script, interprété côté serveur Performant: systèmes de caches Langage peu typé et souple Facile à apprendre par un débutant Nombreuses fonctions du langage C Gratuit, libre, simple d'installation Multiplate-forme (LAMP, WAMP)
  • 24. I.1: Symfony en une phrase ... Framework de développement Web en PHP Langage de script, interprété côté serveur Performant: systèmes de caches Langage peu typé et souple Facile à apprendre par un débutant Nombreuses fonctions du langage C Gratuit, libre, simple d'installation Multiplate-forme (LAMP, WAMP)
  • 25. Framework de développement Web en PHP Rasmus Lerdorf, né à Qeqertarsuaq 1994: création, 1995: publication, 1998: reprise 2000: PHP4 réécriture complète => Zend Engine 2004: PHP5 modèle objet => Zend Engine 2 2006: v5.2 2010: v5.3 (namespaces, annotations, archives phar, ...) 2012: v5.4 (traits, serveur web embarqué en CLI, ...) 2013: v5.5 (API de hachage, cache intégré, ...) I.1: Symfony en une phrase ...
  • 26. Framework de développement Web en PHP Rasmus Lerdorf, né à Qeqertarsuaq 1994: création, 1995: publication, 1998: reprise 2000: PHP4 réécriture complète => Zend Engine 2004: PHP5 modèle objet => Zend Engine 2 2006: v5.2 2010: v5.3 (namespaces, annotations, archives phar, ...) 2012: v5.4 (traits, serveur web embarqué en CLI, ...) 2013: v5.5 (API de hachage, cache intégré, ...) I.1: Symfony en une phrase ...
  • 27. Framework de développement Web en PHP Rasmus Lerdorf, né à Qeqertarsuaq 1994: création, 1995: publication, 1998: reprise 2000: PHP4 réécriture complète => Zend Engine 2004: PHP5 modèle objet => Zend Engine 2 2006: v5.2 2010: v5.3 (namespaces, annotations, archives phar, ...) 2012: v5.4 (traits, serveur web embarqué en CLI, ...) 2013: v5.5 (API de hachage, cache intégré, ...) I.1: Symfony en une phrase ...
  • 28. Framework de développement Web en PHP Rasmus Lerdorf, né à Qeqertarsuaq 1994: création, 1995: publication, 1998: reprise 2000: PHP4 réécriture complète => Zend Engine 2004: PHP5 modèle objet => Zend Engine 2 2006: v5.2 2010: v5.3 (namespaces, annotations, archives phar, ...) 2012: v5.4 (traits, serveur web embarqué en CLI, ...) 2013: v5.5 (API de hachage, cache intégré, ...) I.1: Symfony en une phrase ...
  • 29. Framework de développement Web en PHP Rasmus Lerdorf, né à Qeqertarsuaq 1994: création, 1995: publication, 1998: reprise 2000: PHP4 réécriture complète => Zend Engine 2004: PHP5 modèle objet => Zend Engine 2 2006: v5.2 2010: v5.3 (namespaces, annotations, archives phar, ...) 2012: v5.4 (traits, serveur web embarqué en CLI, ...) 2013: v5.5 (API de hachage, cache intégré, ...) I.1: Symfony en une phrase ...
  • 30. Framework de développement Web en PHP Rasmus Lerdorf, né à Qeqertarsuaq 1994: création, 1995: publication, 1998: reprise 2000: PHP4 réécriture complète => Zend Engine 2004: PHP5 modèle objet => Zend Engine 2 2006: v5.2 2010: PHP6 Unicode 2012: v5.4 (traits, serveur web embarqué en CLI, ...) 2013: v5.5 (API de hachage, cache intégré, ...) I.1: Symfony en une phrase ...
  • 31. Framework de développement Web en PHP Rasmus Lerdorf, né à Qeqertarsuaq 1994: création, 1995: publication, 1998: reprise 2000: PHP4 réécriture complète => Zend Engine 2004: PHP5 modèle objet => Zend Engine 2 2006: v5.2 2010: v5.3 (namespaces, annotations, archives phar, ...) 2012: v5.4 (traits, serveur web embarqué en CLI, ...) 2013: v5.5 (API de hachage, cache intégré, ...) I.1: Symfony en une phrase ...
  • 32. Framework de développement Web en PHP Rasmus Lerdorf, né à Qeqertarsuaq 1994: création, 1995: publication, 1998: reprise 2000: PHP4 réécriture complète => Zend Engine 2004: PHP5 modèle objet => Zend Engine 2 2006: v5.2 2010: v5.3 (namespaces, annotations, archives phar, ...) 2012: v5.4 (traits, serveur web embarqué en CLI, ...) 2013: v5.5 (API de hachage, cache intégré, ...) I.1: Symfony en une phrase ...
  • 33. I.2: Qui se cache derrière ? Web agency Française : Sensio [1998] Fabien Potencier, lead développeur Sensio Framework [dès 2000] Symfony 1.0 [2005] => 1.4 [2010] Symfony 2.0 [été 2011] => 2.3 [été 2013]
  • 34. I.2: Qui se cache derrière ? Web agency Française : Sensio [1998] Fabien Potencier, lead développeur Sensio Framework [dès 2000] Symfony 1.0 [2005] => 1.4 [2010] Symfony 2.0 [été 2011] => 2.3 [été 2013]
  • 35. I.2: Qui se cache derrière ? Web agency Française : Sensio [1998] Fabien Potencier, lead développeur Sensio Framework [dès 2000] Symfony 1.0 [2005] => 1.4 [2010] Symfony 2.0 [été 2011] => 2.3 [été 2013]
  • 36. I.2: Qui se cache derrière ? Web agency Française : Sensio [1998] Fabien Potencier, lead développeur Sensio Framework [dès 2000] Symfony 1.0 [2005] => 1.4 [2010] Symfony 2.0 [été 2011] => 2.3 [été 2013]
  • 37. I.2: Qui se cache derrière ?
  • 38. Aux débuts du web il y eu PHP … I.3: Quoi d’autre en PHP ?
  • 39. Aux débuts du web il y eu PHP … Très simple, mais limité I.3: Quoi d’autre en PHP ?
  • 40. I.3: Quoi d’autre en PHP ? Aux débuts du web il y eu PHP … Très simple, mais limité Dispose de l'essentiel pour la plus part des projets, de plus en plus connu
  • 41. I.3: Quoi d’autre en PHP ? Aux débuts du web il y eu PHP … Très simple, mais limité Dispose de l'essentiel pour la plus part des projets, de plus en plus connu Très complet mais complexe Grosse communauté
  • 42. “Symfony is not a framework but a project” Framework entièrement modulaire Composants ‘systèmes’ de bases (routing, http, moteur de rendu, …) Bundles découpage de l’application en fonctionnalités Indépendance et donc partage I.4: Alors pourquoi Symfony ?
  • 43. I.4: Alors pourquoi Symfony ? “Symfony is not a framework but a project” Framework entièrement modulaire: Composants ‘systèmes’ natifs (routing, http, moteur de rendu, …) Bundles découpage de l’application en fonctionnalités Indépendance et donc partage
  • 44. I.4: Alors pourquoi Symfony ? “Symfony is not a framework but a project” Framework entièrement modulaire: Composants ‘systèmes’ de bases (routing, http, moteur de rendu, …) Bundles découpage de l’application en fonctionnalités Indépendance et donc partage
  • 45. I.4: Alors pourquoi Symfony ? “Symfony is not a framework but a project” Framework entièrement modulaire: Composants ‘systèmes’ de bases (routing, http, moteur de rendu, …) Bundles découpage de l’application en fonctionnalités Indépendance et donc partage
  • 46. I.4: Alors pourquoi Symfony ? L'un des plus flexibles et des plus puissants Gros efforts fait sur les performances Stabilité mais évolution constante Grande réputation professionnelle Existence d’une grosse communauté Internationale et Française Distribué sous licence Open Source MIT
  • 47. I.4: Alors pourquoi Symfony ? L'un des plus flexibles et des plus puissants Gros efforts fait sur les performances Stabilité mais évolution constante Grande réputation professionnelle Existence d’une grosse communauté Internationale et Française Distribué sous licence Open Source MIT
  • 48. I.4: Alors pourquoi Symfony ? L'un des plus flexibles et des plus puissants Gros efforts fait sur les performances Stabilité mais évolution constante Grande réputation professionnelle Existence d’une grosse communauté Internationale et Française Distribué sous licence Open Source MIT
  • 49. I.4: Alors pourquoi Symfony ? L'un des plus flexibles et des plus puissants Gros efforts fait sur les performances Stabilité mais évolution constante Grande réputation professionnelle Existence d’une grosse communauté Internationale et Française Distribué sous licence Open Source MIT
  • 50. I.5: Qui utilise Symfony ?
  • 51. II. En avant la musique ! 1: Téléchargement, Installation, Hello world ! 2: Structure d’un projet Symfony2 3: Génération de code (CRUD) 4: Principaux composants Barre de débug, enrobage des exceptions Twig (moteur de rendu) Doctrine (base de données) Forms Services et Injection de dépendances
  • 52. II.1: Installation Créer un projet symfony2 avec composer http://getcomposer.org/ https://github.com/composer/composer C’est quoi ? un fichier .phar Ça sert à quoi ? gérer les bibliothèques et les dépendances … et ça marche du tonnerre ! # télécharger composer $ curl -sS https://getcomposer.org/installer | php # créer un projer Symfony2 $ php composer.phar create-project symfony/framework-standard-edition ./ <code />
  • 53. II.2: Structure d’un projet Symfony2 ● les bundles ● les environnements ● le format YAML (YAML Ain't Markup Language) ● les namespaces namespace AcmeDemoBundleController; ● best practices : http://symfony.com/fr/doc/current/cookbook/bundles/best_practices.html Contrôleurs Ressources Web Extensions du Conteneur de Services Fichiers de traduction Listeners d’évènements Templates Configuration Tests unitaires & fonctionnels
  • 54. II.3: Génération de code Ce qu’on va faire : : en 4 commandes
  • 55. II.3: Génération de code Étape 1 : récupérer les informations en base ● structure des tables ● relations ● crée des meta-données au format xml (yml) $ php app/console doctrine:mapping:convert xml ./src/Acme/DemoBundle/Resources/config/doctrine/metadata/orm --from-database --force <code />
  • 56. Étape 2 : créer les Entity (avec le mapping) Qu’est-ce qu’une entité ? II.3: Génération de code $ php app/console doctrine:mapping:import AcmeDemoBundle annotation <code /> class Article { private $id; private $id_auteur; /** * @ORMColumn(name="titre", type="string") */ private $titre; … public function getTitre() { … } public function setTitre() { … } }
  • 57. Étape 3 : Finalisation ● Générer les accesseurs ● Assurer la cohérence du modèle attention à cette commande en production ! II.3: Génération de code $ php app/console doctrine:generate:entities AcmeDemoBundle <code /> $ php app/console doctrine:schema:update --dump-sql $ php app/console doctrine:schema:update --force <code />
  • 58. Étape 4 : Générer des modules CRUD ● CRUD = Create, Read, Update, Delete ● pratique au début pour jouer avec le code ● on va générer 3 choses : ○ des vues ○ des contrôleurs ○ des formulaires II.3: Génération de code $ php app/console doctrine:generate:crud <code />
  • 59. II.4.1: Aide au debuggage Barre de debug ● Timeline ● Requêtes exécutées ● Limite : appels AJAX (possibilité d’accès dynamique la barre) Enrobage des exceptions
  • 60. II.4.2: Twig, un moteur de rendu ● plus aucune balise <?php ?> dans les vues ● une syntaxe simple et TRES efficace ● extensible ● héritage de tempates ● composant indépendant de Symfony ● http://twig.sensiolabs.org/
  • 61. II.4.2: Twig, un moteur de rendu L’annotation @Route ● Permet de nommer la route ● Indique à la vue quel action utiliser L’annotation @Method ● Précise le type de requête HTTP (GET, POST) L’annotation @Template ● Indique au contrôleur quelle vue utiliser ● Peut être omise (Symfony va essayer de deviner) ● Peut indiquer le langage (TWIG ou PHP)
  • 62. II.4.3: Doctrine = DBAL + ORM ● Plusieurs ORM ● Plusieurs SGBD ○ MySQL, PgSQL, SQLlite (PDO) ○ Oracle (OCI) ● Des annotations pour décrire la structure ● Un langage (Doctrine Query Language)
  • 63. ● Des requêtes “magiques” ● Des accesseurs “intelligents” Dans une vue, je souhaite afficher une information d’une table liée (jointure) : ○ L’information est présente dans l’entité : je l’utilise ○ L’information est absente de l’entité : on la récupère II.4.3: Doctrine = DBAL + ORM // Contrôleur $article = $this->getDoctrine() ->getRepository('AcmeDemoBundle:Article ') ->find($id); $article = $this->getDoctrine() ->getRepository('AcmeDemoBundle:Article ') ->findOneByTitle('Symfony2'); <code />
  • 64. II.4.4: La gestion des formulaires ● composant indépendant de Symfony ● 2 types de formulaires ○ liés à une entité (persistance du contenu en base) ○ indépendants ● formulaires imbriqués ● protection CSRF (Cross-Site Request Forgery) ● validation ● Extensions et Types personnalisés ● HTML5
  • 65. II.4.5: Services & Injections de dépendances ● Tout (ou presque) est un service ● Permet ○ un haut degrés de factorisation ○ une réutilisation du code ○ des tests ● Peut dépendre d’autre(s) service(s) // Resources/config/services.yml syl.helper.membres: class: "SylCadeauxBundleServicesMembresHelper" arguments: ["@doctrine.orm.entity_manager"] calls: - [ injectMailer, [ " @syl.service.mail" ] ] <code />
  • 66. En vrac ● Assetic ● I18N & L10N (XLIFF) ● Mailer (Swiftmailer) ● Tests unitaires et fonctionnels
  • 67. Fin !
  • 68. Des Questions ? mais sans tee-shirt cette fois-ci ...