{"id":10220,"date":"2014-01-02T15:10:44","date_gmt":"2014-01-02T14:10:44","guid":{"rendered":"http:\/\/flaven.fr\/?p=10220"},"modified":"2017-10-27T13:12:07","modified_gmt":"2017-10-27T11:12:07","slug":"laravel-php-framework-introduction-a-laravel-php-framework","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2014\/01\/laravel-php-framework-introduction-a-laravel-php-framework\/","title":{"rendered":"Laravel, PHP, Framework &#8211; Introduction \u00e0 Laravel PHP Framework"},"content":{"rendered":"\n<p><!--  Laravel, PHP, Framework - Introduction \u00e0 Laravel PHP Framework   --><br \/>\n\t<!--  Laravel, PHP, Framework, TextPattern, symfony, CodeIgniter, Blade, 37signals, TextPattern, MVC  --><\/p>\n<p>\tVoil\u00e0 un framework int\u00e9ressant et \u00e9l\u00e9gant, une synth\u00e8se habile tant au niveau marketing qu&#8217;au niveau du code entre Symfony et CodeIgniter, beaucoup d&#8217;emprunts \u00e0 RoR (merci 37signals).<br \/>\n\tComme \u00e0 chaque fois, compte tenu de sa naissance tardive, Laravel essaye de repousser plus loin encore les limites du Framework MVC en PHP et y parvient dans une certaine mesure sur de tr\u00e8s nombreux aspects.<\/p>\n<h4>Une pointe d&#8217;\u00e9l\u00e9gance<\/h4>\n<p>  A noter, l&#8217;\u00e9l\u00e9gance n&#8217;est pas sans rappeler le CMS TextPattern dans un genre tout \u00e0 fait diff\u00e9rent. En effet, le code semble avoir \u00e9t\u00e9 livr\u00e9 par d&#8217;excellents developpeurs, \u00e0 ce niveau on parle plut\u00f4t de &#8220;software architect&#8221;, qui ne n\u00e9glige pas pour autant l&#8217;esth\u00e9tique :<\/p>\n<ul>\n<li>Un code limpide, tr\u00e8s grande simplicit\u00e9, tr\u00e8s minimaliste, tr\u00e8s DRY et didactique la courbe d&#8217;apprentissage s&#8217;en trouve donc grandement facilit\u00e9.<\/li>\n<li>Une documentation intuitive et efficace, bien \u00e9crite et amusante !<\/li>\n<li>Une terminologie choisie, le concepteur a du faire un cours de fran\u00e7ais dans ses jeunes ann\u00e9es car l&#8217;ensemble de la terminologie de Laravel est en Fran\u00e7ais. Cela donne un petit vernis Luxe qui n&#8217;est pas sans d\u00e9plaire. Ne manque plus que Charlize Theron comme contributrice et la boucle sera boucl\u00e9e.<\/li>\n<\/ul>\n<p>Cela peut sembler tr\u00e8s anodin mais les \u00e9l\u00e9ment cit\u00e9es plus hauts sont parfois d\u00e9terminants dans l&#8217;adoption et la vulgarisation, le marketing disons-le. En donnant cette sensation de manufacture, de qualit\u00e9, ce framework n&#8217;a pas vocation uniquement \u00e0 s&#8217;adresser aux nerds et \u00e0 toutes les chances de s\u00e9duire au-de-l\u00e0 du cercle des initi\u00e9s. Toutefois, pour contrebalancer cette affirmation, les choses trop esth\u00e9tiques, notamment en mati\u00e8re de framework, ne sont pas forcement les plus adopt\u00e9es. Trop chichiteuses, trop pr\u00e9tentieuses, cela semble parfois nuire au caract\u00e8re s\u00e9rieux de la chose en question. Passons, on peut quand m\u00eame se f\u00e9liciter de cette initiative louable. Pour information, je vous invite \u00e0 lire en anglais, la profession de foi des cr\u00e9ateurs de Laravel, c&#8217;est \u00e9loquent :<\/p>\n<blockquote><p>\n  Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable, creative experience to be truly fulfilling. Laravel attempts to take the pain out of development by easing common tasks used in the majority of web projects, such as authentication, routing, sessions, and caching.<\/p>\n<p>  Laravel aims to make the development process a pleasing one for the developer without sacrificing application functionality. Happy developers make the best code. To this end, we&#8217;ve attempted to combine the very best of what we have seen in other web frameworks, including frameworks implemented in other languages, such as Ruby on Rails, ASP.NET MVC, and Sinatra.<\/p>\n<p>  Laravel is accessible, yet powerful, providing powerful tools needed for large, robust applications. A superb inversion of control container, expressive migration system, and tightly integrated unit testing support give you the tools you need to build any application with which you are tasked.<\/p>\n<\/blockquote>\n<p><i>Source : readme.md <\/i><\/p>\n<h4>Les rudiments sur Laravel<\/h4>\n<p>Sans s&#8217;appesantir sur l&#8217;installation, il vous faut t\u00e9l\u00e9charger <code>Laravel<\/code>, dezipper puis installer sur un serveur. Dans notre exemple, on place le r\u00e9pertoire nomm\u00e9 <code>laravel-master<\/code> dans un MAMP et on a cr\u00e9e une Base de donn\u00e9es du nom de <code>demo-laravel<\/code>.<\/p>\n<p><b>A l&#8217;inverse de CI (CodeIgniter), l&#8217;installation n&#8217;est pas si trivial et demande un peu de travail. Exp\u00e9dions tout d&#8217;abord, les deux points les plus faciles : la base de donn\u00e9es (BDD), le chemin sur le serveur (sur MAMP). On se garde le plus d\u00e9licat pour la fin : l&#8217;installation de Composer.<\/b><\/p>\n<p><b>1. Laravel &#8211; la base de donn\u00e9es<\/b><\/p>\n<pre lang=\"sql\">\r\n  --\r\n  -- Base de donn\u00e9es: `demo-laravel`\r\n  --\r\n  CREATE DATABASE IF NOT EXISTS `demo-laravel` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;\r\n<\/pre>\n<p><b>2. Laravel &#8211; Le chemin du r\u00e9pertoire<\/b><br \/>\nUne fois le r\u00e9pertoire dezipp\u00e9, on le copie-colle sur la racine du serveur MAMP, <code>[path_on_your_serveur]\/laravel-master\/<\/code>. Dans notre exemple, on nomme le r\u00e9pertoire <code>my-laravel<\/code><\/p>\n<p><b>3. Laravel &#8211; Installer le <code>Composer<\/code><\/b><br \/>\nBon, apr\u00e8s ces deux choses relativement importantes effectu\u00e9es, on ne peut toujours pas commencer \u00e0 d\u00e9couvrir Laravel et effectuer une petite migration par exemple. Il reste \u00e0 installer le tr\u00e8s s\u00e9rieux <code>composer<\/code>, essentiel au bon fonctionnement de Laravel car vous avez toutes les chances d&#8217;avoir cette erreur classique ci-dessous.<\/p>\n<p><b>L&#8217;erreur classique<\/b><\/p>\n<pre lang=\"bash\">\r\nFatal error: require(): Failed opening required '\/Applications\/MAMP\/htdocs\/my-laravel\/bootstrap\/..\/vendor\/autoload.php' (include_path='.:') in \/Applications\/MAMP\/htdocs\/my-laravel\/bootstrap\/autoload.php on line 17\r\n<\/pre>\n<p><b>Voici comment brutalement, on va corriger deux probl\u00e8mes en un : l&#8217;erreur classique et le fait que Mac OSX est livr\u00e9e avec une version de PHP pas \u00e0 jour pour utiliser Laravel.<\/b><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2014\/01\/install_1.jpg\" alt=\"Laravel, PHP, Framework - Introduction \u00e0 Laravel PHP Framework\" width=\"500\" height=\"313\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2014\/01\/install_2.jpg\" alt=\"Laravel, PHP, Framework - Introduction \u00e0 Laravel PHP Framework\" width=\"500\" height=\"313\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2014\/01\/install_3.jpg\" alt=\"Laravel, PHP, Framework - Introduction \u00e0 Laravel PHP Framework\" width=\"500\" height=\"313\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2014\/01\/install_4.jpg\" alt=\"Laravel, PHP, Framework - Introduction \u00e0 Laravel PHP Framework\" width=\"500\" height=\"313\" \/><\/p>\n<h4>R\u00e9gler son compte \u00e0 votre version de PHP ou une pierre, 2 coups<\/h4>\n<p>Plut\u00f4t que de se risquer \u00e0 une mise \u00e0 jour de PHP sur Mac OSX via Homebrew par exemple, on choisit la solution de facilit\u00e9. <b>On change la version de PHP, accessible via la console, c&#8217;est \u00e0 dire par d\u00e9faut du Mac OSX, en faisant pointer la commande <code>php<\/code> vers la version 5.5.3 disponible dans MAMP. Vous aurez de fait disponible l&#8217;extension Mcrypt PHP extension, n\u00e9cessaire au fonctionnement de Laravel.<\/b><\/p>\n<p><b>Se mettre \u00e0 la racine<\/b><\/p>\n<pre lang=\"bash\">cd ~\/[votre-nom-d-utilisateur] <\/pre>\n<p><b>Editer votre profil bash<\/b><\/p>\n<pre lang=\"bash\">vi .bash_profile<\/pre>\n<p><b>Ajouter cette ligne<\/b><\/p>\n<pre lang>\r\n# Added to change the path to update the PHP version but still using MAMP\r\nexport PATH=\/Applications\/MAMP\/bin\/php\/php5.5.3\/bin:$PATH\r\n<\/pre>\n<p><b>Laisser reposer&#8230;. Non, le mieux est de red\u00e9marrer et ensuite de v\u00e9rifier si vos commandes ont bien prises en compte. Voici les 3 types de v\u00e9rifications possibles.<\/b><\/p>\n<p><b>V\u00e9rification 1<\/b><\/p>\n<pre lang=\"bash\">which php<\/pre>\n<pre lang=\"bash\">\/Applications\/MAMP\/bin\/php\/php5.5.3\/bin\/php<\/pre>\n<p><b>V\u00e9rification 2<\/b><\/p>\n<pre lang=\"bash\">php --ini<\/pre>\n<pre lang=\"bash\">Configuration File (php.ini) Path: \/Applications\/MAMP\/bin\/php\/php5.5.3\/conf\r\nLoaded Configuration File:         \/Applications\/MAMP\/bin\/php\/php5.5.3\/conf\/php.ini\r\n<\/pre>\n<p><b>V\u00e9rification 3<\/b><\/p>\n<pre lang=\"bash\">php -v<\/pre>\n<pre lang=\"bash\">\r\nPHP 5.5.3 (cli) (built: Dec 16 2012 14:31:13) \r\nCopyright (c) 1997-2013 The PHP Group\r\nZend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies\r\n<\/pre>\n<p><b>Vous pensez enfin pouvoir profiter un peu de Laravel, que nenni ! Il reste \u00e0 installer le <code>Composer<\/code><\/b><\/p>\n<h4>Installer Composer (Dependency Manager for PHP) pour Laravel<\/h4>\n<p>Il faut ensuite se rendre dans le r\u00e9pertoire d&#8217;installation de Laravel via la console via cette commande et lancer <code>Composer<\/code>.<\/p>\n<pre lang=\"bash\">cd \/Applications\/MAMP\/htdocs\/my-laravel<\/pre>\n<p>On va chercher le <code>Composer<\/code> dans sa tani\u00e8re, via la commande suivante, \u00e0 taper dans la console.<br \/>\n<code lang=\"bash\">curl -s getcomposer.org\/installer | php -d detect_unicode=Off<\/code><\/p>\n<p>Dans la console, peu importe o\u00f9 vous trouvez sur votre disque, nous allons ensuite faire de <code>Composer<\/code>, un \u00e9l\u00e9ment accessible de n&#8217;importe sur notre syst\u00e8me. Pour se faire, voici la commande \u00e0 passer.<br \/>\n<code lang=\"bash\">mv \/[path_to_your_file]\/composer.phar \/usr\/local\/bin\/composer<\/code><\/p>\n<p><b>Et voil\u00e0&#8230; L&#8217;installation de Laravel qui \u00e9tait cens\u00e9 \u00eatre un formalit\u00e9, se r\u00e9v\u00e8le plus complexe que pr\u00e9vu. Rien d&#8217;\u00e9tonnant, on est dans la vraie vie pas dans un d\u00e9pliant commercial.<\/b><\/p>\n<p><i>Source:  <a href=\"http:\/\/laravel.com\/docs\/installation\" target=\"_blank\">http:\/\/laravel.com\/docs\/installation<\/a><\/i>  <\/p>\n<h4>Laravel &#8211; Les principes de migration<\/h4>\n<p>Commen\u00e7ons par le commencement pour appr\u00e9hender les principes de migration, on change la BDD et on connecte Laravel \u00e0 notre nouvelle Base <code>demo-laravel<\/code> dans <code>[path_on_your_serveur]\/laravel-master\/app\/config\/database.php<\/code>.<\/p>\n<p><b>Le fichier database.php<\/b><\/p>\n<pre lang=\"php\">\r\n  'mysql' => array(\r\n\t\t'driver'    => 'mysql',\r\n\t\t'host'      => 'localhost',\r\n\t\t\/\/ 'database'  => 'database',\r\n\t\t'database'  => 'demo-laravel',\r\n\t\t'username'  => 'root',\r\n\t\t'password'  => '',\r\n\t\t'charset'   => 'utf8',\r\n\t\t'collation' => 'utf8_unicode_ci',\r\n\t\t'prefix'    => '',\r\n\t),\r\n<\/pre>\n<p><i>Source : \/path_on_your_serveur_laravel_master]\/app\/config\/database.php<\/i><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2014\/01\/migrate_1.jpg\" alt=\"Laravel, PHP, Framework - Introduction \u00e0 Laravel PHP Framework\" width=\"500\" height=\"313\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2014\/01\/migrate_2.jpg\" alt=\"Laravel, PHP, Framework - Introduction \u00e0 Laravel PHP Framework\" width=\"500\" height=\"313\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2014\/01\/migrate_3.jpg\" alt=\"Laravel, PHP, Framework - Introduction \u00e0 Laravel PHP Framework\" width=\"500\" height=\"313\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2014\/01\/migrate_4.jpg\" alt=\"Laravel, PHP, Framework - Introduction \u00e0 Laravel PHP Framework\" width=\"500\" height=\"313\" \/><\/p>\n<p>Il faut n\u00e9cessairement ouvrir une console, car nous allons nous servir du &#8220;s\u00e9same&#8221; une fois dans la console \u00e0 savoir <code>artisan<\/code> pour utiliser les fonctionnalit\u00e9s de migration de Laravel.<\/p>\n<p><b>Migrate &#8211; UP (proc\u00e9dure de migration)<\/b><\/p>\n<p>  <b>commande 1<\/b><\/p>\n<pre lang=\"bash\">php artisan migrate:install<\/pre>\n<p>  <b>commande 2<\/b><\/p>\n<pre lang=\"bash\">php artisan migrate:make create_users_table<\/pre>\n<p>  <b>commande 3<\/b><\/p>\n<pre lang=\"bash\">php artisan migrate<\/pre>\n<p>  <b>2014_01_02_064430_create_users_table.php<\/b><br \/>\n  <em>Voir dans \/Applications\/MAMP\/htdocs\/my-laravel\/app\/database\/2014_01_02_064430_create_users_table.php<br \/>\n<\/em>  <\/p>\n<pre lang=\"php\">\r\n    use Illuminate\\Database\\Migrations\\Migration;\r\n\r\n    class CreateUsersTable extends Migration {\r\n\r\n    \t\/**\r\n    \t * Run the migrations.\r\n    \t *\r\n    \t * @return void\r\n    \t *\/\r\n    \tpublic function up()\r\n    \t{\r\n    \t\t\/* Add some schema *\/\r\n    \t\tSchema::create('authors', function($table) {\r\n\r\n    \t\t              \/\/ ENGINE=MyISAM\r\n    \t\t              $table->engine = \"MyISAM\";\r\n                      \/\/ auto increment id (primary key)\r\n                      $table->increments('id');\r\n                      $table->string('name');\r\n                      $table->integer('age')->nullable();\r\n                      $table->boolean('active')->default(1);\r\n                      $table->integer('role_id')->unsigned();\r\n                      $table->text('bio');\r\n                      \/\/ created_at, updated_at DATETIME\r\n                      $table->timestamps();\r\n                  });\r\n\r\n    \t}\r\n\r\n    \t\/**\r\n    \t * Reverse the migrations.\r\n    \t *\r\n    \t * @return void\r\n    \t *\/\r\n    \tpublic function down()\r\n    \t{\r\n    \t\t\/* Add some scheam *\/\r\n    \t\tSchema::drop('authors');\r\n    \t}\r\n\r\n    }\r\n  <\/pre>\n<p><b>L&#8217;\u00e9quivalent en SQL &#8211; 2014_01_02_064430_create_users_table.sql<\/b><\/p>\n<pre lang=\"sql\">\r\n  --\r\n  -- Structure de la table `authors`\r\n  --\r\n\r\n  CREATE TABLE `authors` (\r\n    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,\r\n    `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,\r\n    `age` int(11) DEFAULT NULL,\r\n    `active` tinyint(1) NOT NULL DEFAULT '1',\r\n    `role_id` int(10) unsigned NOT NULL,\r\n    `bio` text COLLATE utf8_unicode_ci NOT NULL,\r\n    `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',\r\n    `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',\r\n    PRIMARY KEY (`id`)\r\n  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;\r\n  <\/pre>\n<p>  <b>Migrate &#8211; DOWN (proc\u00e9dure de rollback)<\/b><\/p>\n<p>  <b>commande 1<\/b><\/p>\n<pre lang=\"bash\">php artisan migrate:rollback<\/pre>\n<p><i>Source : <a href=\"http:\/\/laravel.com\/docs\/schema\" target=\"_blank\">http:\/\/laravel.com\/docs\/schema<\/a><\/i><\/p>\n<p><i>Source : <a href=\"http:\/\/laravelbook.com\/laravel-migrations-managing-databases\/\" target=\"_blank\">http:\/\/laravelbook.com\/laravel-migrations-managing-databases\/<\/a><\/i><\/p>\n<h4>Faute de temps<\/h4>\n<p>Comme l&#8217;installation a pris du temps, on remet \u00e0 plus tard 3 autres points essentiels du framework :<\/p>\n<ol>\n<li>L&#8217;exploration de l&#8217;ORM de laravel nomm\u00e9 eloquent<\/li>\n<li>Le passage \u00e0 la vitesse sup\u00e9rieure, en utilisant le principe des tasks pour acc\u00e9l\u00e9rer le processus de cr\u00e9ation en MVC. Tasks est un truc assez connu dans Kohana.<\/li>\n<li>Le syst\u00e8me de Templating de Laravel : Blade.\n<\/ol>\n<p><b>Toutefois, hormis, l&#8217;absence d&#8217;une installation &#8220;plug and play&#8221;, le framework est clairement la rel\u00e8ve de CodeIgniter et un outsider s\u00e9rieux aux autres Frameworks notamment l&#8217;incontournable Symfony. A suivre.<\/b><\/p>\n<h2>En savoir plus<\/h2>\n<ul>\n<li>Laravel &#8211; The PHP framework for web artisans<br \/><a href=\"http:\/\/laravel.com\/\" target=\"_blank\">http:\/\/laravel.com\/<\/a><\/li>\n<li>Laravel &#8211; Query Builder<br \/><a href=\"http:\/\/four.laravel.com\/docs\/queries\" target=\"_blank\">http:\/\/four.laravel.com\/docs\/queries<\/a><\/li>\n<li>Laravel &#8211; Generating A Drop-Down List<br \/><a href=\"http:\/\/laravel.com\/docs\/html#drop-down-lists\" target=\"_blank\">http:\/\/laravel.com\/docs\/html#drop-down-lists<\/a><\/li>\n<li>Quickly setup laravel to work in mamp (mac osx 10.8)<br \/><a href=\"http:\/\/blog.jboyd.co\/quickly-setup-laravel-to-work-in-mamp\/\" target=\"_blank\">http:\/\/blog.jboyd.co\/quickly-setup-laravel-to-work-in-mamp\/<\/a><\/li>\n<li>PHP 5.4 development on OS X with MySQL and Laravel 4<br \/><a href=\"http:\/\/createdbypete.com\/articles\/php-54-development-on-os-x-with-mysql-and-laravel-4\/\" target=\"_blank\">http:\/\/createdbypete.com\/articles\/php-54-development-on-os-x-with-mysql-and-laravel-4\/<\/a><\/li>\n<li>Installer Laravel sous mac os et MAMP<br \/><a href=\"https:\/\/docs.google.com\/document\/d\/1eXaL8mAv7bGQ_xq_f6sO5jf23X7APuRwCDAexHN52mY\/edit?pli=1\" target=\"_blank\">https:\/\/docs.google.com\/document\/d\/1eXaL8mAv7bGQ_xq_f6sO5jf23X7APuRwCDAexHN52mY\/edit?pli=1<\/a><\/li>\n<li>  PHP 5.3\/5.4\/5.5 for<br \/>\n      OS X 10.6\/10.7\/10.8\/10.9<br \/>\n      as binary package<br \/><a href=\"http:\/\/php-osx.liip.ch\/\" target=\"_blank\">http:\/\/php-osx.liip.ch\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Voil\u00e0 un framework int\u00e9ressant et \u00e9l\u00e9gant, une synth\u00e8se habile tant au niveau marketing qu&#8217;au niveau du code entre Symfony et CodeIgniter, beaucoup d&#8217;emprunts \u00e0 RoR&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2014\/01\/laravel-php-framework-introduction-a-laravel-php-framework\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">Laravel, PHP, Framework &#8211; Introduction \u00e0 Laravel PHP Framework<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":10230,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"Laravel PHP Framework combine Symfony et CodeIgniter pour offrir une solution \u00e9l\u00e9gante et performante. D\u00e9couvrez ses outils et r\u00e9sultats innovants.","bf_ai_og_title":"Introduction Laravel PHP","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":[3444,3448,3449,3450,3451,3435],"tags":[2059,2058,179,2216,2056,181,20,182,2057],"class_list":["post-10220","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming-databases","category-tools-productivity","category-tutorials-how-to","category-ux-product-design","category-web-design-front-end","category-web-development","tag-37signals","tag-blade","tag-codeigniter","tag-framework","tag-laravel","tag-mvc","tag-php","tag-symfony","tag-textpattern"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-2EQ","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2014\/01\/using_laravel_bf.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/10220","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=10220"}],"version-history":[{"count":3,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/10220\/revisions"}],"predecessor-version":[{"id":10933,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/10220\/revisions\/10933"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/10230"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=10220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=10220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=10220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}