{"id":15738,"date":"2017-05-18T14:48:59","date_gmt":"2017-05-18T14:48:59","guid":{"rendered":"http:\/\/blog.kaliop.com\/?p=15738"},"modified":"2020-03-25T09:53:21","modified_gmt":"2020-03-25T09:53:21","slug":"les-changements-majeurs-a-venir-sur-symfony-4","status":"publish","type":"post","link":"https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/","title":{"rendered":"Les changements majeurs \u00e0 venir sur Symfony 4"},"content":{"rendered":"<p><a href=\"https:\/\/www.kaliop.com\/\/app\/blog-uploads\/2017\/05\/Symfony-Live-800x600.jpg\"><img loading=\"lazy\" class=\"size-medium wp-image-15770 alignleft\" src=\"https:\/\/www.kaliop.com\/\/app\/blog-uploads\/2017\/05\/Symfony-Live-800x600-300x225.jpg\" alt=\"Symfony-Live\" width=\"300\" height=\"225\" \/><\/a>Dans <a href=\"http:\/\/blog.kaliop.com\/blog\/2017\/05\/17\/symfony-4-faciliter-vie-developpeurs\/\">un pr\u00e9c\u00e9dent article<\/a>, je d\u00e9crivais les changements que SensioLabs allait mettre en place concernant <strong>Symfony<\/strong>.<br \/>\nCet article a plus une vocation technique, avec un listing non exhaustif des changements majeurs que l\u2019on pourra rencontrer dans Symfony 4.<\/p>\n<h2>Quelques changements significatifs<\/h2>\n<p>Le premier changement significatif est que Symfony 4 n\u2019embarque que les bundles servant au \u2019<strong>core<\/strong>\u2019. Votre application ne poss\u00e8de pas de Form? Pas besoin de <a href=\"https:\/\/github.com\/symfony\/form\">symfony\/form<\/a>. Vous ne voulez pas des X bundles qui s\u2019installent au premier \u2018composer update\u2019 ? Utilisez Symfony 4. C\u2019est en partant de <a href=\"https:\/\/github.com\/symfony\/skeleton\">symfony\/skeleton<\/a> que vous pourrez avoir une instance ultra l\u00e9g\u00e8re de Symfony.<\/p>\n<p>Autre chose? Oui bien s\u00fbr ! Le code de l\u2019application devient <strong>BundleLess<\/strong>. Ce qui va simplifier l\u2019utilisation des classes dans le dossier `src\/` qui seront simplement r\u00e9gies par le namespace \u2018App\\\u2019. De cette fa\u00e7on, SensioLabs montre encore un peu plus sa volont\u00e9 de r\u00e9duire la complexit\u00e9 visuelle des applications.<\/p>\n<blockquote><p>Un changement majeur, qui va faciliter la vie de beaucoup de d\u00e9veloppeurs, concerne l\u2019installation et la configuration de bundles externes.<\/p><\/blockquote>\n<p>Symfony embarque la possibilit\u00e9 d\u2019\u00e9crire des Recipes (ou \u201cRecettes\u201d pour les plus francophones d\u2019entre-nous) qui correspondent \u00e0 une suite de lignes de commandes (Symfony ou non), qui seront ex\u00e9cut\u00e9es \u00e0 l\u2019installation du bundle.<br \/>\nDes exemples de recipes sont disponibles sur le repository <a href=\"https:\/\/github.com\/symfony\/recipes\">symfony\/recipes<\/a>.<\/p>\n<p>Si le contributeur du bundle a besoin d\u2019installer des fixtures, de vider le cache ou autre action n\u00e9cessaire \u00e0 l\u2019installation de son bundle, il pourra d\u00e9crire ce comportement dans son fichier de Recipe. Plus besoin de lire le README.md ou autre documentation pour installer le bundle. Aussi, le fichier config.yml ne contiendra plus la configuration de tous les bundles utilis\u00e9s:<\/p>\n<blockquote><p>Chaque bundle contient son propre dossier de configuration.<\/p><\/blockquote>\n<p>Si vous voulez en savoir plus sur cette notion de recettes, je vous renvoie vers <a href=\"https:\/\/medium.com\/@fabpot\/symfony-4-contributing-recipes-2f489dc6f645\">l\u2019article de Fabien Potencier<\/a>, qui liste toutes les fonctionnalit\u00e9s associ\u00e9es \u00e0 cette nouvelle fonctionnalit\u00e9. Il est cependant possible d\u2019installer les bundles de l\u2019ancienne fa\u00e7on.<\/p>\n<h2>Des raccourcis dans la nouvelle CLI<\/h2>\n<p>Une autre nouveaut\u00e9 dans la stack, concerne les Aliases. En effet, il sera possible d\u2019utiliser directement des bundles recommand\u00e9s par Sensio. Par exemple, il y aura un raccourci pour installer un bundle d\u2019administration :<\/p>\n<p>[su_table]<\/p>\n<table>\n<tbody>\n<tr>\n<td>$ composer req admin<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>[\/su_table]<\/p>\n<p>Cette commande va installer le bundle <a href=\"https:\/\/github.com\/javiereguiluz\/EasyAdminBundle\">javiereguiluz\/EasyAdminBundle<\/a> de Javier Eguiluz. On retrouve tout l&rsquo;int\u00e9r\u00eat de cette commande avec les \u201crecipes\u201d vues plus haut qui permettent d\u2019installer le bundle tr\u00e8s facilement.<br \/>\nSensio a eu de nombreux retours concernant des d\u00e9veloppeurs et des entreprises qui indiquent ne pas avoir ni le temps ni l\u2019envie d\u2019\u00e9prouver des bundles. C\u2019est dans ce cadre l\u00e0 que Sensio recommande (mais n\u2019oblige en aucune fa\u00e7on) l\u2019utilisation de certains bundles, pour faciliter la vie des d\u00e9veloppeurs dans leurs choix.<\/p>\n<h2>Encore des changements dans l\u2019organisation des dossiers &amp; fichiers<\/h2>\n<p>Si vous n\u2019avez pas suivi les changements de Symfony 3, le dossier `bin` a remplac\u00e9 le dossier `app\u2019 et nous avons eu l\u2019apparition d\u2019un dossier `var`, qui va contenir les logs qui \u00e9taient dans le dossier `app\u2019 en Symfony 2.<\/p>\n<p>Avec Symfony 4, un nouveau dossier appara\u00eet: il s\u2019agit du dossier `templates` qui va remplacer le dossier `views`. La raison est que `View` est un concept \u00e0 part enti\u00e8re. Le dossier `etc` remplace le dossier `app\/config` et va contenir la configuration de l\u2019instance. Cette modification sert simplement \u00e0 raccourcir le chemin vers les fichiers de configuration.<\/p>\n<h2>D\u2019autres changements dans la gestion des param\u00e8tres d\u2019environnement<\/h2>\n<p>Pour finir, il n\u2019y a plus de notions de parameters_[ENV] qui pointent en lien symbolique vers le bon environnement courant. Ces param\u00e8tres sont g\u00e9r\u00e9s comme des variables d\u2019environnement directement exploitables. Plusieurs int\u00e9r\u00eats se pr\u00e9sentent avec cette modification :<\/p>\n<ul>\n<li>Pas besoin de vider le cache au changement des param\u00e8tres<\/li>\n<li>Les variables sont ind\u00e9pendantes du code<\/li>\n<\/ul>\n<p>Qui dit param\u00e8tres par variables d\u2019environnement, dit plus besoin d\u2019indiquer l\u2019environnement pour les commandes. Il suffit juste d\u2019indiquer APP_ENV avec l\u2019environnement qui convient !<\/p>\n<h2>En conclusion<\/h2>\n<p>Des changements, et non des moindres, sont pr\u00e9sents pour cette nouvelle version. Certains semblent tr\u00e8s utiles (gestion des param\u00e8tres par environnement, une instance light en d\u00e9but de projet) et d\u2019autres moins (migration des templates dans le dossier \u2018templates\u2019, installation de bundles choisie par d\u00e9faut). Reste \u00e0 savoir si ces changements seront agr\u00e9ablement accueillis.<\/p>\n<p>Vous pouvez retrouver <a href=\"http:\/\/symfony.com\/blog\/symfony-4-a-new-way-to-develop-applications\">tous les blog-posts de Fabien Potencier<\/a> concernant les changements et pourquoi ont-ils eu lieu. En cadeau, une vid\u00e9o Youtube de <strong>SensioLabs<\/strong> qui montre comment construire une API avec Symfony4:<\/p>\n<p><iframe loading=\"lazy\" title=\"Symfony Flex - Demo - Creating an API project\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/o9N1nOYfAl4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans un pr\u00e9c\u00e9dent article, je d\u00e9crivais les changements que SensioLabs allait mettre en place concernant Symfony. Cet article a plus une vocation technique, avec un listing non exhaustif des changements majeurs que l\u2019on pourra rencontrer dans Symfony 4. Quelques changements significatifs Le premier changement significatif est que Symfony 4 n\u2019embarque que les bundles servant au [&hellip;]<\/p>\n","protected":false},"author":18,"featured_media":17604,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","inline_featured_image":false},"categories":[1],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Les changements majeurs \u00e0 venir sur Symfony 4 - Blog<\/title>\n<meta name=\"description\" content=\"D\u00e9couvrez Symfony 4 et ses changements majeurs, \u00e0 venir. Cet article a plus une vocation technique, avec un listing non exhaustif des changements majeurs que l\u2019on pourra rencontrer dans Symfony 4.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Les changements majeurs \u00e0 venir sur Symfony 4 - Blog\" \/>\n<meta property=\"og:description\" content=\"D\u00e9couvrez Symfony 4 et ses changements majeurs, \u00e0 venir. Cet article a plus une vocation technique, avec un listing non exhaustif des changements majeurs que l\u2019on pourra rencontrer dans Symfony 4.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-18T14:48:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-03-25T09:53:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.kaliop.com\/app\/uploads\/2017\/05\/admin-ajax-11.png\" \/>\n\t<meta property=\"og:image:width\" content=\"400\" \/>\n\t<meta property=\"og:image:height\" content=\"267\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Baptiste Leulliette\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Baptiste Leulliette\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/\",\"url\":\"https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/\",\"name\":\"Les changements majeurs \u00e0 venir sur Symfony 4 - Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.kaliop.com\/fr\/#website\"},\"datePublished\":\"2017-05-18T14:48:59+00:00\",\"dateModified\":\"2020-03-25T09:53:21+00:00\",\"author\":{\"@id\":\"https:\/\/www.kaliop.com\/fr\/#\/schema\/person\/a25b55ad23d62974bdaf33e7e795e47b\"},\"description\":\"D\u00e9couvrez Symfony 4 et ses changements majeurs, \u00e0 venir. Cet article a plus une vocation technique, avec un listing non exhaustif des changements majeurs que l\u2019on pourra rencontrer dans Symfony 4.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.kaliop.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Les changements majeurs \u00e0 venir sur Symfony 4\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.kaliop.com\/fr\/#website\",\"url\":\"https:\/\/www.kaliop.com\/fr\/\",\"name\":\"\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.kaliop.com\/fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.kaliop.com\/fr\/#\/schema\/person\/a25b55ad23d62974bdaf33e7e795e47b\",\"name\":\"Baptiste Leulliette\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.kaliop.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.kaliop.com\/app\/uploads\/2023\/05\/bleullliette-150x150.png\",\"contentUrl\":\"https:\/\/www.kaliop.com\/app\/uploads\/2023\/05\/bleullliette-150x150.png\",\"caption\":\"Baptiste Leulliette\"},\"description\":\"[fr]D\u00e9veloppeur JS, je suis passionn\u00e9 par les technologies d'aujourd'hui et de demain. Je porte aussi un grand int\u00e9r\u00eat \u00e0 l'aspect DevOps, principalement avec AWS.[\/fr] [en] As a JavaScript developer, I am passionate about today\u2019s and tomorrow\u2019s technologies. I also have a strong interest in DevOps, mainly with AWS. [\/en]\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Les changements majeurs \u00e0 venir sur Symfony 4 - Blog","description":"D\u00e9couvrez Symfony 4 et ses changements majeurs, \u00e0 venir. Cet article a plus une vocation technique, avec un listing non exhaustif des changements majeurs que l\u2019on pourra rencontrer dans Symfony 4.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/","og_locale":"fr_FR","og_type":"article","og_title":"Les changements majeurs \u00e0 venir sur Symfony 4 - Blog","og_description":"D\u00e9couvrez Symfony 4 et ses changements majeurs, \u00e0 venir. Cet article a plus une vocation technique, avec un listing non exhaustif des changements majeurs que l\u2019on pourra rencontrer dans Symfony 4.","og_url":"https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/","article_published_time":"2017-05-18T14:48:59+00:00","article_modified_time":"2020-03-25T09:53:21+00:00","og_image":[{"width":400,"height":267,"url":"https:\/\/www.kaliop.com\/app\/uploads\/2017\/05\/admin-ajax-11.png","type":"image\/png"}],"author":"Baptiste Leulliette","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Baptiste Leulliette","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/","url":"https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/","name":"Les changements majeurs \u00e0 venir sur Symfony 4 - Blog","isPartOf":{"@id":"https:\/\/www.kaliop.com\/fr\/#website"},"datePublished":"2017-05-18T14:48:59+00:00","dateModified":"2020-03-25T09:53:21+00:00","author":{"@id":"https:\/\/www.kaliop.com\/fr\/#\/schema\/person\/a25b55ad23d62974bdaf33e7e795e47b"},"description":"D\u00e9couvrez Symfony 4 et ses changements majeurs, \u00e0 venir. Cet article a plus une vocation technique, avec un listing non exhaustif des changements majeurs que l\u2019on pourra rencontrer dans Symfony 4.","breadcrumb":{"@id":"https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.kaliop.com\/fr\/les-changements-majeurs-a-venir-sur-symfony-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.kaliop.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Les changements majeurs \u00e0 venir sur Symfony 4"}]},{"@type":"WebSite","@id":"https:\/\/www.kaliop.com\/fr\/#website","url":"https:\/\/www.kaliop.com\/fr\/","name":"","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.kaliop.com\/fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/www.kaliop.com\/fr\/#\/schema\/person\/a25b55ad23d62974bdaf33e7e795e47b","name":"Baptiste Leulliette","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.kaliop.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/www.kaliop.com\/app\/uploads\/2023\/05\/bleullliette-150x150.png","contentUrl":"https:\/\/www.kaliop.com\/app\/uploads\/2023\/05\/bleullliette-150x150.png","caption":"Baptiste Leulliette"},"description":"[fr]D\u00e9veloppeur JS, je suis passionn\u00e9 par les technologies d'aujourd'hui et de demain. Je porte aussi un grand int\u00e9r\u00eat \u00e0 l'aspect DevOps, principalement avec AWS.[\/fr] [en] As a JavaScript developer, I am passionate about today\u2019s and tomorrow\u2019s technologies. I also have a strong interest in DevOps, mainly with AWS. [\/en]"}]}},"_links":{"self":[{"href":"https:\/\/www.kaliop.com\/fr\/wp-json\/wp\/v2\/posts\/15738"}],"collection":[{"href":"https:\/\/www.kaliop.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaliop.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaliop.com\/fr\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaliop.com\/fr\/wp-json\/wp\/v2\/comments?post=15738"}],"version-history":[{"count":21,"href":"https:\/\/www.kaliop.com\/fr\/wp-json\/wp\/v2\/posts\/15738\/revisions"}],"predecessor-version":[{"id":28288,"href":"https:\/\/www.kaliop.com\/fr\/wp-json\/wp\/v2\/posts\/15738\/revisions\/28288"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaliop.com\/fr\/wp-json\/wp\/v2\/media\/17604"}],"wp:attachment":[{"href":"https:\/\/www.kaliop.com\/fr\/wp-json\/wp\/v2\/media?parent=15738"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaliop.com\/fr\/wp-json\/wp\/v2\/categories?post=15738"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaliop.com\/fr\/wp-json\/wp\/v2\/tags?post=15738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}