{"id":10163,"date":"2013-11-26T07:54:00","date_gmt":"2013-11-26T06:54:00","guid":{"rendered":"http:\/\/flaven.fr\/?p=10163"},"modified":"2013-11-27T07:02:37","modified_gmt":"2013-11-27T06:02:37","slug":"symfony2-php-framework-introduction-a-symfony-2-les-commandes-essentielles-pour-creer-et-supprimer-un-bundle","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2013\/11\/symfony2-php-framework-introduction-a-symfony-2-les-commandes-essentielles-pour-creer-et-supprimer-un-bundle\/","title":{"rendered":"Symfony2, PHP, Framework &#8211; Introduction \u00e0 Symfony 2, les commandes essentielles pour cr\u00e9er et supprimer un Bundle"},"content":{"rendered":"\n<p><!--  Symfony2, PHP, Framework - Introduction \u00e0 Symfony 2, les commandes essentielles pour cr\u00e9er et supprimer un Bundle --><br \/>\n<!--  Symfony2, Symfony, PHP, Framework Web, d\u00e9veloppement, Bundle, PHP, Github, Mac, Mac OS X, Zend, CakePHP, SensioLabs, Fabien Potencier, CamelCasing, Scaffolding, twig --><\/p>\n<p>\tPour essayer de comprendre le fonctionnement d&#8217;un framework et mod\u00e8le MVC qui sous-tend la logique de Symfony, rien de mieux que de raconter une &#8220;user story&#8221; selon un principe agile bien connu.<br \/>\n\tOn va proc\u00e9der par analogie avec ce que l&#8217;on ferait si on passait commande dans une Boucherie ! Notre utilisateur va ainsi rentrer dans une Boucherie (Bundle), va arpenter le Magasin (Controller) et dans la vitrine (View), choisir un morceau (Value) ! On a donc l&#8217;encha\u00eenement logique grosses-mailles du Bundle si cher \u00e0 Synfony2.<\/p>\n<p>\tAvant de faire nos emplettes, dans cette nouvelle boucherie, il faut au moins s&#8217;assurer qu&#8217;elle peut exister, en clair que l&#8217;on la possibilit\u00e9 de faire fonctionner Symfony2 en local, en l&#8217;esp\u00e8ce sur un Mac \u00e0 l&#8217;aide de MAMP.<\/p>\n<h4>Le bonne environnement en local ou Comment Mettre \u00e0 Jour MAMP<\/h4>\n<p>    Pour faire fonctionner <code>Symfony<\/code> en local il vous faudra mettre \u00e0 jour <code>MAMP<\/code>.<br \/>\n    Il faut donc garder les param\u00e8tres \u00e9ventuels que vous avez pu mettre.<br \/>\n    <code>Port APACHE 80<\/code><br \/>\n    <code>Port MySQL 3306<\/code><br \/>\n    <code>Version de php 5.5.3<\/code><\/p>\n<p>    Inutile d&#8217;avoir de s\u00e9lectionner un syst\u00e8me de cache pour le moment tout au moins genre <code>APC<\/code> par exemple, symphony pourvoie \u00e0 vos besoins.<\/p>\n<p>    Bien conserver les r\u00e9pertoires <code>\/Applications\/MAMP\/db\/<\/code> et <code>Applications\/MAMP\/htdocs\/<\/code> et tout devrait bien se passer apres la mise \u00e0 jour de MAMP.<\/p>\n<h4>Les erreurs \u00e9ventuels \u00e0 corriger<\/h4>\n<p>    Des erreurs qui ne sont pas v\u00e9ritablement effectives mais bon qui peuvent expliquer un \u00e9ventuel dysfonctionnement de symfony.<\/p>\n<p>    Dans <code>\/Applications\/MAMP\/htdocs\/symfony\/Symfony\/web\/app.php<\/code><\/p>\n<pre lang=\"php\">\r\n    \/* Change 23\/11\/13 *\/\r\n    $kernel = new AppKernel('prod', false);\r\n    \/\/ $kernel = new AppKernel('prod', true);\r\n    <\/pre>\n<p>    Dans <code>\/Applications\/MAMP\/bin\/php\/php5.5.3\/conf\/php.ini<\/code> pour la version de php 5.5.3<\/p>\n<ul>\n<li>Mettre la valeur short_open_tag \u00e0 &#8220;Off&#8221;, elle est sur &#8220;On&#8221; par d\u00e9faut<\/li>\n<li>Mettre la valeur magic_quotes_gpc \u00e0 &#8220;Off&#8221;<\/li>\n<\/ul>\n<p>Toutefois, si vous parvenez \u00e0 afficher cette adresse en local, c&#8217;est gagn\u00e9.<br \/>\n<code>http:\/\/127.0.0.1\/sf_framework\/Symfony\/web\/app_dev.php<\/code><\/p>\n<p>On peut d\u00e9sormais passer aux choses s\u00e9rieuses. Pour m\u00e9moire quelques captures des \u00e9crans.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/11\/symfony_premier_violon_bf_error_1.jpg\" alt=\"Git, Version, Github, Mac - Utiliser Git, les premiers pas\" width=\"500\" height=\"313\" \/><\/p>\n<p><b>Symfony2 fonctionne sur MAMP<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/11\/symfony_premier_violon_error_solved.jpg\" alt=\"Git, Version, Github, Mac - Utiliser Git, les premiers pas\" width=\"500\" height=\"313\" \/><\/p>\n\t\t\t\t\t<div class=\"textwidget-unique text\">\n\n\t\t\t\t\t        <div class=\"textwidget-photo\">\n\t\t\t\t\t                <a href=\"https:\/\/flaven.fr\/books\/building-php-applications-with-symfony-cakephp-and-zend-framework\/\" class=\"photo\" title=\"Building PHP Applications with Symfony, CakePHP, and Zend Framework\"><img loading=\"lazy\" decoding=\"async\" alt=\"Building PHP Applications with Symfony, CakePHP, and Zend Framework\" src=\"http:\/\/ecx.images-amazon.com\/images\/I\/51XWwPYb8FL._SL160_.jpg\" width=\"126\" height=\"160\"><\/a>\n\t\t\t\t\t            <\/div>\n\t\t\t\t\t\t<div class=\"info half\">\n\t\t\t\t\t\t\t<h2 class=\"product-title\"><a class=\"head\" href=\"https:\/\/flaven.fr\/books\/building-php-applications-with-symfony-cakephp-and-zend-framework\/\" title=\"Building PHP Applications with Symfony, CakePHP, and Zend Framework\">Building PHP Applications with Symfony, CakePHP, and Zend Framework<\/a><\/h2>\n\t\t\t\t\t\t\t\n\t\t\t\t\t        <p class=\"product-excerpt\">Une somme et un comparatif tr\u00e8s instructif sur les frameworks PHP du march\u00e9 que sont : Symfony, CakePHP, et Zend. C'est rare d'avoir une vue d'ensemble des 3 frameworks afin de pouvoir faire un arbitrage sur celui \u00e0 choisir pour cr\u00e9er une application Web. Le livre va vraiment dans le d\u00e9tail de chaque framework en passant en revue un tr\u00e8s large \u00e9ventail de sujets : installation, configuration de fonctionnalit\u00e9s avanc\u00e9es telles que AJAX, Web Services et les tests automatis\u00e9s. Un chapeau bas et un \"dzi\u0119kuj\u0119 bardzo\" aux trois auteurs polonais  Bartosz Porebski, Karol Przystalski, Leszek Nowak pour ce travail exceptionnel.<\/p>\n\t\t\t\t\t\t\t\tGenre(s) : <a href=\"https:\/\/flaven.fr\/book-type\/applications\/\" rel=\"tag\">Applications<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/cakephp\/\" rel=\"tag\">CakePHP<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/database-mysql\/\" rel=\"tag\">Database MySQL<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/developpement-open-source\/\" rel=\"tag\">D\u00e9veloppement<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/framework\/\" rel=\"tag\">Framework<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/open-source-agile-developpement\/\" rel=\"tag\">Open Source<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/php\/\" rel=\"tag\">PHP<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/php-applications\/\" rel=\"tag\">PHP Applications<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/symfony\/\" rel=\"tag\">Symfony<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/web-apps\/\" rel=\"tag\">Web Apps<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/zend\/\" rel=\"tag\">Zend<\/a><br>Auteur(s) : <a href=\"https:\/\/flaven.fr\/book-author\/bartosz-porebski\/\" rel=\"tag\">Bartosz Porebski<\/a>, <a href=\"https:\/\/flaven.fr\/book-author\/karol-przystalski\/\" rel=\"tag\">Karol Przystalski<\/a>, <a href=\"https:\/\/flaven.fr\/book-author\/leszek-nowak\/\" rel=\"tag\">Leszek Nowak<\/a><br>Edition(s) : <a href=\"https:\/\/flaven.fr\/book-description\/cakephp\/\" rel=\"tag\">CakePHP<\/a>, <a href=\"https:\/\/flaven.fr\/book-description\/framework\/\" rel=\"tag\">Framework<\/a>, <a href=\"https:\/\/flaven.fr\/book-description\/php-applications\/\" rel=\"tag\">PHP Applications<\/a>, <a href=\"https:\/\/flaven.fr\/book-description\/symfony\/\" rel=\"tag\">Symfony<\/a>, <a href=\"https:\/\/flaven.fr\/book-description\/zend\/\" rel=\"tag\">Zend<\/a><br>\n\t\t\t\t\t<div class=\"but-wrap\"><a href=\"http:\/\/www.amazon.fr\/Building-Applications-Symfony-CakePHP-Framework-ebook\/dp\/B004PGMHTM%3FSubscriptionId%3DAKIAJYB2QGGQOTHQLRPA%26tag%3Dhecubenet-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB004PGMHTM\" class=\"button\"><span><i class=\"more\"><\/i>+ d'infos<\/span><\/a><\/div>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\n<h4>RoR, Symfony m\u00eame combat&#8230;<\/h4>\n<p>    RoR et Symfony ont beaucoup en commun. Cela n&#8217;a rien d&#8217;\u00e9tonnant en raison  dde la parent\u00e9 MVC entre , pour ceux d&#8217;entre vous qui aurait fait du RoR, c&#8217;est assez \u00e9tonnant. Le concept de <code>scaffolding<\/code> est tout entier pr\u00e9sent dans symfony2. A n&#8217;en pas douter l&#8217;association avec Drupal peut se r\u00e9v\u00e9ler d\u00e9vastatrice puisque c&#8217;est un tout-en-un, un framework tr\u00e8s puissant, tr\u00e8s productiviste et un CMS complexe mais donc \u00e9minemment souple. Sans doute que l&#8217;association des 2 peut cr\u00e9er des \u00e9tincelles ou bien se r\u00e9v\u00e9ler \u00eatre une gorgone ! <\/p>\n<p>    On avait d\u00e9j\u00e0 un peu tourn\u00e9 autour de la question dans des articles pr\u00e9c\u00e9dents.<\/p>\n<ul>\n<li><a href=\"https:\/\/flaven.fr\/2009\/05\/framework-php-quel-framework-choisir-entre-codeigniter-cakephp-symphony-zend\/\" target=\"_blank\">Framework PHP \u2013 Quel framework choisir entre CodeIgniter, CakePHP, Symfony, Zend&#8230;<\/a><\/li>\n<li><a href=\"https:\/\/flaven.fr\/2009\/10\/kohana-codeigniter-framework-php-un-comparatif-entre-kohana-et-codeigniter\/\" target=\"_blank\">Kohana, CodeIgniter, Framework PHP \u2013 Un comparatif entre Kohana et CodeIgniter<\/a><\/li>\n<\/ul>\n<h4>L&#8217;essentiel pour cr\u00e9er un Bundle<\/h4>\n<p>  Voici l&#8217;essentiel des commandes pour cr\u00e9er un <code>Bundle<\/code>, la fameux <code>Hello World<\/code>. On va changer aussi le contenu des fichiers pour \u00eatre conforme \u00e0 notre &#8220;user-story&#8221;.<\/p>\n<p>  Voil\u00e0 en vrac le contenu de tout les fichiers ainsi que la marche \u00e0 suivre.<\/p>\n<pre lang=\"bash\">\r\n  cd \/Applications\/MAMP\/htdocs\/sf_framework\/Symfony\/\r\n  <\/pre>\n<pre lang=\"bash\">\r\n    php app\/console generate:bundle\r\n    <\/pre>\n<blockquote><p>\n  Le nom du bundle est fait \u00e0 l&#8217;aide d&#8217;un peu de <code>CamelCasing<\/code>, histoire de pouvoir g\u00e9n\u00e9rer l&#8217;arborescence des r\u00e9pertoires. C&#8217;est le respect du principe <code>convention over configuration<\/code> qui explique cette obligation dans la nomenclature afin de faciliter le <code>Scaffolding<\/code>. Un exemple vous est donn\u00e9 dans la console <code>Acme\/Bundle\/BlogBundle<\/code>. Nous allons opter pour un nom beaucoup plus fantaisiste tout en respectant la nomenclature <code>Bruno\/Bundle\/BoucherieBundle<\/code>\n  <\/p><\/blockquote>\n<p><b>Le nom de notre Bundle<\/b><\/p>\n<pre lang=\"bash\">\r\n    Bruno\/Bundle\/BoucherieBundle\r\n    <\/pre>\n<p><b>Dans <code>AppKernel.php<\/code>, cela ajoute une ligne<\/b><\/p>\n<pre lang=\"php\">\r\nnew Bruno\\Bundle\\BoucherieBundle\\BrunoBoucherieBundle(),\r\n<\/pre>\n<p><b>Dans <code>routing.yml<\/code>, cela ajoute une ligne<\/b><\/p>\n<pre lang=\"yml\">\r\n  bruno_boucherie:\r\n      resource: \"@BrunoBoucherieBundle\/Resources\/config\/routing.yml\"\r\n      prefix:   \/\r\n<\/pre>\n<p>On a bien notre arborescence<br \/>\n<code>\/Applications\/MAMP\/htdocs\/sf_framework\/Symfony\/src\/Bruno\/Bundle\/BoucherieBundle<\/code><\/p>\n<p>On va donc maintenant modifier les \u00e9l\u00e9ments au sein de ce r\u00e9pertoire pour obnetnir cette vue.<br \/>\n<code>http:\/\/127.0.0.1\/sf_framework\/Symfony\/web\/app_dev.php\/vitrine\/veau<\/code><\/p>\n<p><b>La vue <code>vitrine.html.twig<\/code> dans <code>\/Bruno\/Bundle\/BoucherieBundle\/Resources\/views\/Magasin\/<\/code><\/b><\/p>\n<pre lang=\"html\">\r\n  <b>Bonjour {{ morceau }},<\/b> <br>\r\n  <code>Class -> BrunoBoucherieBundle<\/code><br>\r\n  <code>Controller -> MagasinController<\/code><br>\r\n  <code>View -> vitrine.html.twig<\/code><br>\r\n  <code>Value -> morceau<\/code><br>\r\n<\/pre>\n<p><b>Le fichier <code>routing.yml<\/code> dans <code>\/Bruno\/Bundle\/BoucherieBundle\/Resources\/config\/<\/code><\/b><\/p>\n<pre lang=\"yml\">\r\nma_vitrine_de_boucherie:\r\n    pattern:  \/vitrine\/{morceau}\r\n    defaults: { _controller: BrunoBoucherieBundle:Magasin:vitrine }\r\n<\/pre>\n<p><b>Le fichier <code>MagasinController.php<\/code> dans <code>\/Bruno\/Bundle\/BoucherieBundle\/Controller\/<\/code><\/b><\/p>\n<pre lang=\"php\">\r\n    namespace Bruno\\Bundle\\BoucherieBundle\\Controller;\r\n\r\n    use Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller;\r\n\r\n    class MagasinController extends Controller\r\n    {\r\n        public function vitrineAction($morceau)\r\n        {\r\n            return $this->render('BrunoBoucherieBundle:Magasin:vitrine.html.twig', array('morceau' => $morceau));\r\n        }\r\n    }\r\n  <\/pre>\n<h4>L&#8217;essentiel pour supprimer un Bundle<\/h4>\n<p>\tSupprimer le r\u00e9pertoire du Bundle dans le dossier <code>\/Applications\/MAMP\/htdocs\/sf_framework\/Symfony\/src\/<\/code><\/p>\n<pre lang=\"bash\">rm -r [nom_du_repertoire]<\/pre>\n<p>  Supprimer la ligne concernant le Bundle dans le fichier <code>\/Applications\/MAMP\/htdocs\/sf_framework\/Symfony\/app\/AppKernel.php<\/code><\/p>\n<p>  Supprimer la ligne concernant le Bundle dans le fichier <code>\/Applications\/MAMP\/htdocs\/sf_framework\/Symfony\/app\/config\/routing.yml<\/code><\/p>\n<p><b>Cr\u00e9ation d&#8217;un app sous Symfony2<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/11\/symfony_premier_violon_bundle_1.jpg\" alt=\"Git, Version, Github, Mac - Utiliser Git, les premiers pas\" width=\"500\" height=\"313\" \/><\/p>\n<p><b>Cr\u00e9ation d&#8217;un app sous Symfony2<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/11\/symfony_premier_violon_bundle_2.jpg\" alt=\"Git, Version, Github, Mac - Utiliser Git, les premiers pas\" width=\"500\" height=\"313\" \/><\/p>\n<p><b>Cr\u00e9ation d&#8217;un app sous Symfony2<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/11\/symfony_premier_violon_bundle_3.jpg\" alt=\"Git, Version, Github, Mac - Utiliser Git, les premiers pas\" width=\"500\" height=\"313\" \/><\/p>\n<h4>Supprimer une app sous symfony<\/h4>\n<p>    Il faut nettoyer le fichier <code>routing.yml<\/code> et le fichier <code>AppKernel.php<\/code>. On aura donc \u00e0 enlever les ligne suivantes apr\u00e8s avoir supprimer le r\u00e9pertoire dans <code>\/Applications\/MAMP\/htdocs\/sf_framework\/Symfony\/src\/<\/code><\/p>\n<p>    Dans <code>\/Applications\/MAMP\/htdocs\/sf_framework\/Symfony\/config\/routing.yml<\/code><\/p>\n<pre lang=\"php\">\r\n      bruno_boucherie:\r\n          resource: \"@BrunoBoucherieBundle\/Resources\/config\/routing.yml\"\r\n          prefix:   \/\r\n    <\/pre>\n<p>    Dans <code>\/Applications\/MAMP\/htdocs\/sf_framework\/Symfony\/app\/AppKernel.php<\/code>.<\/p>\n<pre lang=\"php\">\r\n    new Bruno\\Bundle\\BoucherieBundle\\BrunoBoucherieBundle(),\r\n    <\/pre>\n<p><b>Conclusion : Symfony2 est un framework \u00e9minemment productiviste. On peut s&#8217;en servir pour &#8220;mocker&#8221; et surtout d\u00e9velopper des app web, de mani\u00e8re tr\u00e8s rapide m\u00eame si la framework parait un peu lourd au d\u00e9part. Il est assez aussi opportun de s&#8217;y int\u00e9resser pour d\u00e9crocher des contrats sur le march\u00e9 du d\u00e9veloppement en France tout au moins. En effet, c&#8217;est un framewok massivement adopt\u00e9 par les poids lourds du d\u00e9veloppement donc les comp\u00e9tences sont donc tr\u00e8s recherch\u00e9es plus peut-\u00eatre que des comp\u00e9tences sur CakePHP ou Zend.<\/b><\/p>\n<h2>En savoir plus<\/h2>\n<ul>\n<li>Symfony2 Tutorial 3 &#8211; How to create a bundle in Symfony 2<br \/><a href=\"http:\/\/www.youtube.com\/watch?v=PONJajuH8P4\" target=\"_blank\">http:\/\/www.youtube.com\/watch?v=PONJajuH8P4<\/a><\/li>\n<li>Creating Pages in Symfony2<br \/><a href=\"http:\/\/symfony.com\/doc\/current\/book\/page_creation.html\" target=\"_blank\">http:\/\/symfony.com\/doc\/current\/book\/page_creation.html<\/a><\/li>\n<li>Setting Up Symfony 2 On Mac Os X Lion With Mamp<br \/><a href=\"http:\/\/skripted.ruhoh.com\/2012\/06\/16\/setting-up-symfony-2-on-mac-os-x-lion-with-mamp\/\" target=\"_blank\">http:\/\/skripted.ruhoh.com\/2012\/06\/16\/setting-up-symfony-2-on-mac-os-x-lion-with-mamp\/<\/a><\/li>\n<li>Installer Symfony 2 pour d\u00e9velopper sur Mac OS X<br \/><a href=\"http:\/\/www.johann-roche.com\/2012\/12\/07\/installer-symfony-2-pour-developper-sur-mac-os-x\/\" target=\"_blank\">http:\/\/www.johann-roche.com\/2012\/12\/07\/installer-symfony-2-pour-developper-sur-mac-os-x\/<\/a><\/li>\n<li>Installer Symfony 2 pour d\u00e9velopper sur Mac OS X<br \/><a href=\"http:\/\/blog.servergrove.com\/2012\/06\/01\/setting-up-a-symfony2-project-using-mamp\/\" target=\"_blank\">http:\/\/blog.servergrove.com\/2012\/06\/01\/setting-up-a-symfony2-project-using-mamp\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Pour essayer de comprendre le fonctionnement d&#8217;un framework et mod\u00e8le MVC qui sous-tend la logique de Symfony, rien de mieux que de raconter une &#8220;user&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2013\/11\/symfony2-php-framework-introduction-a-symfony-2-les-commandes-essentielles-pour-creer-et-supprimer-un-bundle\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">Symfony2, PHP, Framework &#8211; Introduction \u00e0 Symfony 2, les commandes essentielles pour cr\u00e9er et supprimer un Bundle<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":10170,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"Symfony 2, PHP Framework \u2013 Introduction. Cr\u00e9ez et supprimez des Bundles avec des outils pratiques.","bf_ai_og_title":"Symfony 2: Commandes Bundle","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3439,3444,3447,3448,3450,3451,3435,3452],"tags":[1953,178,1956,138,1955,1952,787,2210,216,20,399,1954,182,355,1957,183],"class_list":["post-10163","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apis-integration","category-programming-databases","category-technology-trends","category-tools-productivity","category-ux-product-design","category-web-design-front-end","category-web-development","category-wordpress-cms","tag-bundle","tag-cakephp","tag-camelcasing","tag-developpement","tag-fabien-potencier","tag-framework-web","tag-github","tag-mac","tag-mac-os-x","tag-php","tag-scaffolding","tag-sensiolabs","tag-symfony","tag-symfony2","tag-twig","tag-zend"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-2DV","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/11\/symfony_premier_violon_bf.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/10163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/comments?post=10163"}],"version-history":[{"count":4,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/10163\/revisions"}],"predecessor-version":[{"id":10268,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/10163\/revisions\/10268"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/10170"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=10163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=10163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=10163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}