Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Présentation du framework Symfony2

sylzys
January 30, 2014

Présentation du framework Symfony2

Présentation du framework Symfony2

sylzys

January 30, 2014
Tweet

More Decks by sylzys

Other Decks in Technology

Transcript

  1. @sylzys Symfony Version 1 en 2005 Version 2 en 2011

    Créé par SensioLabs (Fabien Potencier) Edité en open source + de 850 contributeurs, + de 1600 bundles 3 jeudi 30 janvier 14
  2. @sylzys Des centaines d’applications et de sites Drupal, PhpBB, eZ

    Publish, Composer, Magento, Doctrine, Silex,Propel, BBC...* http://symfony.com/projects http://trac.symfony-project.org/wiki/ ApplicationsDevelopedWithSymfony * et même YouPorn 4 jeudi 30 janvier 14
  3. @sylzys La philosophie Symfony «Symfony demande de convertir une Request

    en Response» 1 class DefaultController extends Controller 2 { 3 public function indexAction($name) 4 { 5 //place your code here :) 6 return new Response (sprintf('Hello %s', $name)); 7 } 8 } 5 jeudi 30 janvier 14
  4. @sylzys 1 class DefaultController extends Controller 2 { 3 public

    function indexAction() 4 { 5 //place your code here :) 6 $title = "Welcome to CaenCamp"; 7 return $this->render ('FooBundle:Bar:index.html.twig', array("title" => $title)); 8 } 9 } La philosophie Symfony 6 jeudi 30 janvier 14
  5. @sylzys Le templating «Twig est un moteur de templating moderne

    pour PHP» Développé par SensioLabs Rapide Extensible Héritage de template Méthodes spécifiques http://twig.sensiolabs.org/documentation 7 jeudi 30 janvier 14
  6. @sylzys Le templating 1 {% extends "CaencampConfBundle::layout.html.twig" %} 2 3

    {% block title %} 4 Detail - {{ parent() }} 5 {% endblock %} 6 7 {% block body %} 8 9 <h1>Bienvenue {{ prenom ~ nom|upper }}</h1> 10 Lorem ipsum dolor sit amet, consectetur adipisicing elit. 11 Quia, laborum, et, adipisci, eaque odio nesciunt minima... 12 13 {% endblock %} 8 jeudi 30 janvier 14
  7. @sylzys Le routing 1 class DefaultController extends Controller 2 {

    3 /** 4 * 5 * @Extra:Route("/show/conf/{$id}") 6 */ 7 public function showConferenceAction(Conf $conf) 8 { 9 //place your code here :) 10 $title = $conf->getTitle(); 11 return $this->render('FooBundle:Bar:index.html.twig', array("title" => $title)); 12 } 13 } OU 1 caencamp_voir_conf: 2 pattern: /show/conf/{$id} 3 defaults: { _controller: CaencampConfBundle:Default:showConference } 10 jeudi 30 janvier 14
  8. @sylzys Le debug facilité • Web debug Toolbar • Stacktrace

    • Affichage direct des logs • Profiler Application 11 jeudi 30 janvier 14
  9. @sylzys Database 12 1 /** 2 * Conf 3 *

    @ORM\Table() 4 * @ORM\Entity 5 */ 6 class Conf 7 { 8 /** 9 * @var integer 10 * @ORM\Column(name="id", type="integer") 11 * @ORM\Id 12 * @ORM\GeneratedValue(strategy="AUTO") 13 */ 14 private $id; 15 16 /** 17 * @var string 18 * @ORM\Column(name="title", type="string", length=255) 19 */ 20 private $title; 21 22 /** 23 * @var \DateTime 24 * @ORM\Column(name="date", type="datetime") 25 */ 26 private $date; 27 28 /** 29 * @ORM\ManyToMany(targetEntity="Caencamp\Conf\Entity\Conf", mappedBy="confs") 30 */ 31 private $speakers; 32 33 /** 34 * @var string 35 * @ORM\Column(name="topic", type="text") 36 */ 37 private $topic; 38 [...] jeudi 30 janvier 14
  10. @sylzys 13 Les formulaires • Protection CSRF native • Intégration

    avec Twig • Couplage au framework Validation • Création facilitée en ligne de commande jeudi 30 janvier 14
  11. @sylzys 14 Les formulaires 1 public function addConfAction($type) 2 {

    3 $conf = new Conf(); 4 $form = $this->createForm(new ConfType, $conf); 5 6 $request = $this->get('request'); 7 if ($request->getMethod() == 'POST'){ 8 $form->bind($request); 9 if ($form->isValid()){ 10 //do something with data 11 } 12 } 13 return $this->redirect($this->generateUrl('caencamp_accueil')); 14 } jeudi 30 janvier 14
  12. @sylzys 16 Mais c’est aussi... • Des services • Des

    évenements • Du multilangue facilité • Assetic • FOSUserBundle • ... jeudi 30 janvier 14
  13. @sylzys 17 Liens utiles • http://symfony.com/doc/current/book • https://packagist.org/ • http://docs.doctrine-project.org/projects/doctrine-

    orm/en/latest/ • http://www.symfony2cheatsheet.com/ • http://johnkary.net/blog/useful-commands-for- efficient-symfony2-development/ jeudi 30 janvier 14