{"id":1039,"date":"2015-10-09T11:59:24","date_gmt":"2015-10-09T09:59:24","guid":{"rendered":"http:\/\/www.lafabriquedecode.com\/blog\/?p=1039"},"modified":"2015-10-12T13:53:40","modified_gmt":"2015-10-12T11:53:40","slug":"php-7-les-types-de-retour","status":"publish","type":"post","link":"http:\/\/www.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/","title":{"rendered":"PHP 7 : les types de retour"},"content":{"rendered":"<h1>Un futur vers les retours<\/h1>\n<p>On continue dans la s\u00e9rie \u00ab\u00a0Ces nouveaut\u00e9s qui rendent heureux\u00a0\u00bb avec l&rsquo;annonce de la possibilit\u00e9 de forcer des <strong>types de retour<\/strong> de fonctions dans <strong>PHP 7<\/strong> ! Cette avanc\u00e9e majeure a fait l\u00e0 encore l&rsquo;objet de d\u00e9bats assez vifs au sein de la communaut\u00e9 des d\u00e9veloppeurs PHP, avec des RFC critiqu\u00e9es, d&rsquo;autres \u00e9cart\u00e9es et d&rsquo;autres qui reviendront un jour ou l&rsquo;autre d&rsquo;outre-tombe !<\/p>\n<div id=\"attachment_1049\" style=\"width: 542px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2015\/10\/Terminator-a-failli-ne-pas-dire-I-ll-be-back_portrait_w532.jpg\"><img aria-describedby=\"caption-attachment-1049\" loading=\"lazy\" src=\"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2015\/10\/Terminator-a-failli-ne-pas-dire-I-ll-be-back_portrait_w532.jpg\" alt=\"Terminator, un type de retour\" width=\"532\" height=\"350\" class=\"size-full wp-image-1049\" srcset=\"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2015\/10\/Terminator-a-failli-ne-pas-dire-I-ll-be-back_portrait_w532.jpg 532w, http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2015\/10\/Terminator-a-failli-ne-pas-dire-I-ll-be-back_portrait_w532-300x197.jpg 300w\" sizes=\"(max-width: 532px) 100vw, 532px\" \/><\/a><p id=\"caption-attachment-1049\" class=\"wp-caption-text\">Le type de retour le plus connu au monde !<\/p><\/div>\n<h1>C&rsquo;est l&rsquo;histoire d&rsquo;un type&#8230;<\/h1>\n<p>Scalaire ou pas, nous pouvons maintenant signifier un type de retour dans les d\u00e9clarations de nos fonctions, sous la forme suivante :<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n&lt;MODE D'ACCES&gt; function &lt;NOM&gt; (liste de param\u00e8tres) : &lt;TYPE DE RETOUR&gt;\r\n<\/pre>\n<p>La position de ce type de retour a fait d\u00e9bat d&rsquo;entr\u00e9e de jeu, certains d\u00e9veloppeurs ne souhaitant pas le voir <em>devant<\/em> le nom de la fonction, comme c&rsquo;est le cas en C ou Java, pour des raisons de commodit\u00e9 lors des recherches dans le code (chercher \u00ab\u00a0function mafonc\u00a0\u00bb n&rsquo;aurait plus fonctionn\u00e9 si elle avait du s&rsquo;appeler \u00ab\u00a0function int mafonc\u00a0\u00bb).<\/p>\n<p>Commen\u00e7ons avec des types non scalaires :<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nfunction eleves(): array {\r\n    return [&quot;jean&quot;, &quot;eric&quot;, null];\r\n}\r\n\r\nvar_dump(eleves());\r\n\r\n\/*\r\narray(3) {\r\n  [0]=&gt;\r\n  string(4) &quot;jean&quot;\r\n  [1]=&gt;\r\n  string(4) &quot;eric&quot;\r\n  [2]=&gt;\r\n  NULL\r\n}\r\n*\/\r\n<\/pre>\n<p>ou bien encore :<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nclass Eleve {\r\n    private $_nom;\r\n    private $_prenom;\r\n\r\n    public function __construct ($nom, $prenom) {\r\n        $this-&gt;_nom = $nom;\r\n        $this-&gt;_prenom = $prenom;\r\n    }\r\n}\r\n\r\nfunction eleve($n, $p): Eleve {\r\n    return new Eleve ($n, $p);\r\n}\r\n\r\nvar_dump(eleve(&quot;Rack&quot;, &quot;Eric&quot;));\r\n\r\n\/*\r\nobject(Eleve)#1 (2) {\r\n  [&quot;_nom&quot;:&quot;Eleve&quot;:private]=&gt;\r\n  string(4) &quot;Rack&quot;\r\n  [&quot;_prenom&quot;:&quot;Eleve&quot;:private]=&gt;\r\n  string(4) &quot;Eric&quot;\r\n}\r\n*\/\r\n<\/pre>\n<p>Nous avons utilis\u00e9 dans l&rsquo;exemple pr\u00e9c\u00e9dent des types non scalaires, respectivement tableau (<em>array<\/em>) et objet (de la classe <em>Eleve<\/em>).<\/p>\n<p>Nous pouvons aussi renvoyer des types scalaires, tels que <strong>int<\/strong>, <strong>float<\/strong>, <strong>bool<\/strong> ou encore <strong>string<\/strong> :<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nfunction qi(): int {\r\n    return 150;\r\n}\r\n\r\nvar_dump(qi());\r\n<\/pre>\n<p>Si je modifie le type de retour pour essayer les quatre types susnomm\u00e9s, voici ce que j&rsquo;obtiens :<\/p>\n<pre>int(150)\r\nbool(true)\r\nstring(3) \"150\" \r\nfloat(150)\r\n<\/pre>\n<p>Pensez \u00e0 activer le <strong>typage strict<\/strong> en faisant figurer en premi\u00e8re ligne de votre fichier de test (ou plus proprement, dans l&rsquo;autoloader de votre application) la <strong>directive<\/strong> maintenant bien connue de ceux qui veulent b\u00e9n\u00e9ficier des plus r\u00e9centes fonctionnalit\u00e9s en mati\u00e8re de typage strict, \u00e0 savoir:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\ndeclare(strict_types=1);\r\n<\/pre>\n<p>Comme toujours, il faut respecter le contrat, sinon gare ! Vous ne pouvez pas \u00e9crire :<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nfunction quotientintellectuel(): int {\r\n    return null;\r\n}\r\n<\/pre>\n<p>ou bien encore:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nfunction quotientintellectuel(): int {\r\n    return &quot;150&quot;;\r\n}\r\n<\/pre>\n<p>Sous peine de courroucer PHP, qui, pour le premier exemple, vous jettera \u00e0 la figure un joli :<\/p>\n<pre>Fatal error: Uncaught TypeError: Return value of quotientintellectuel()\r\n must be of the type integer, null returned \r\n<\/pre>\n<h1>Invariance<\/h1>\n<p>Elle reste toujours de mise, \u00e0 savoir que les signatures des m\u00e9thodes h\u00e9rit\u00e9es ou impl\u00e9ment\u00e9es doivent rester EXACTEMENT les m\u00eames dans les sous-types. Ainsi, si vous \u00e9crivez ceci, vous vous provoquerez naturellement l&rsquo;ire du compilateur :<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nclass Eleve {}\r\n \r\ninterface EleveDao {\r\n    function trouverParNom($nom): Eleve; \r\n}\r\n \r\nclass EleveSqlDao implements EleveDao {\r\n\r\n    function trouverParNom($nom) {\r\n        \/\/ mes plus belles requ\u00eates SQL \r\n        return new Eleve();\r\n    }\r\n}\r\n<\/pre>\n<pre>\r\nFatal error: Declaration of EleveSqlDao::trouverParNom($nom) must be compatible with EleveDao::trouverParNom($nom): Eleve\r\n<\/pre>\n<p>Notez que ce comportement pourrait \u00eatre modifi\u00e9 dans les versions futures du langage.<\/p>\n<h1>Peut-on renvoyer \u00ab\u00a0rien\u00a0\u00bb ?<\/h1>\n<p>Il y a eu une <a href=\"https:\/\/wiki.php.net\/rfc\/void_return_type\" target=\"_blank\">tentative<\/a> d&rsquo;introduire un type <strong>void<\/strong> comme en C\/C++ ou Java mais cette proposition a \u00e9t\u00e9 rejet\u00e9e. Vous savez que par d\u00e9faut une fonction PHP renvoie null :<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nfunction rien() {}\r\n\r\nvar_dump(rien());\r\n# NULL\r\n<\/pre>\n<p>Quand on \u00e9crit <strong>void<\/strong>, on notifie que la fonction ne renvoie rien. Or null par d\u00e9faut est <strong>retourn\u00e9<\/strong> par PHP, ce sont deux choses diff\u00e9rentes.<\/p>\n<blockquote><p>Avec void on ne renvoie rien, avec return null on renvoie \u00ab\u00a0absence de valeur\u00a0\u00bb !<\/p><\/blockquote>\n<h1>Quid des fonctions sp\u00e9ciales ?<\/h1>\n<p>Certaines fonctions ne sont pas autoris\u00e9es \u00e0 faire usage des types de retour :<\/p>\n<ul>\n<li>les constructeurs<\/li>\n<li>les destructeurs<\/li>\n<li>les fonctions de clonage<\/li>\n<\/ul>\n<p>En tentant de le faire, vous provoqueriez des erreurs fatales.<\/p>\n<h1>En r\u00e9sum\u00e9<\/h1>\n<p>Coluche disait \u00ab\u00a0Voil\u00e0 une nouvelle qu&rsquo;elle est bonne !\u00a0\u00bb; une d\u00e9licieuse formule qui s&rsquo;applique \u00e0 cette nouvelle fonctionnalit\u00e9 qui, avec le typage strict et de nombreuses autres <a href=\"https:\/\/github.com\/tpunt\/PHP7-Reference\" target=\"_blank\">features<\/a>, constitue une avanc\u00e9e majeure dans le cycle de vie de notre langage pr\u00e9f\u00e9r\u00e9. L&rsquo;introduction de ces possibilit\u00e9s est l&rsquo;occasion une fois de plus de renforcer la bonne hygi\u00e8ne de vos d\u00e9veloppements ! Il reste encore des points \u00e0 r\u00e9gler (void notamment, qu&rsquo;on esp\u00e8re voir arriver un jour !) mais tout va dans la bonne direction ! <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un futur vers les retours On continue dans la s\u00e9rie \u00ab\u00a0Ces nouveaut\u00e9s qui rendent heureux\u00a0\u00bb avec l&rsquo;annonce de la possibilit\u00e9 de forcer des types de retour de fonctions dans PHP 7 ! Cette avanc\u00e9e majeure a fait l\u00e0 encore l&rsquo;objet de d\u00e9bats assez vifs au sein de la communaut\u00e9 des d\u00e9veloppeurs PHP, avec des RFC [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[14,3,88],"tags":[13,86],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.6.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PHP 7 : les types de retour - La Fabrique de code - Tech blog<\/title>\n<meta name=\"description\" content=\"Les types de retour sont un m\u00e9canisme introduit dans la version 7 de PHP. Ils constituent une \u00e9tape importante dans le cycle de vie du langage PHP.\" \/>\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.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP 7 : les types de retour - La Fabrique de code - Tech blog\" \/>\n<meta property=\"og:description\" content=\"Les types de retour sont un m\u00e9canisme introduit dans la version 7 de PHP. Ils constituent une \u00e9tape importante dans le cycle de vie du langage PHP.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/\" \/>\n<meta property=\"og:site_name\" content=\"La Fabrique de code - Tech blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-10-09T09:59:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-10-12T11:53:40+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2015\/10\/Terminator-a-failli-ne-pas-dire-I-ll-be-back_portrait_w532.jpg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:creator\" content=\"@LaFabrique2Code\" \/>\n<meta name=\"twitter:site\" content=\"@LaFabrique2Code\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\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.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/\",\"url\":\"https:\/\/www.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/\",\"name\":\"PHP 7 : les types de retour - La Fabrique de code - Tech blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.lafabriquedecode.com\/blog\/#website\"},\"datePublished\":\"2015-10-09T09:59:24+00:00\",\"dateModified\":\"2015-10-12T11:53:40+00:00\",\"author\":{\"@id\":\"https:\/\/www.lafabriquedecode.com\/blog\/#\/schema\/person\/83863c048b82fd9ccf6407bddd241162\"},\"description\":\"Les types de retour sont un m\u00e9canisme introduit dans la version 7 de PHP. Ils constituent une \u00e9tape importante dans le cycle de vie du langage PHP.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.lafabriquedecode.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP 7 : les types de retour\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.lafabriquedecode.com\/blog\/#website\",\"url\":\"https:\/\/www.lafabriquedecode.com\/blog\/\",\"name\":\"La Fabrique de code - Tech blog\",\"description\":\"PHP objet, MySQL, Design Patterns, OOP...et plus !\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.lafabriquedecode.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.lafabriquedecode.com\/blog\/#\/schema\/person\/83863c048b82fd9ccf6407bddd241162\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.lafabriquedecode.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/fc2e1de7c8a1871b50ff9c6a6f8682a2?s=96&d=retro&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/fc2e1de7c8a1871b50ff9c6a6f8682a2?s=96&d=retro&r=g\",\"caption\":\"admin\"},\"url\":\"http:\/\/www.lafabriquedecode.com\/blog\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PHP 7 : les types de retour - La Fabrique de code - Tech blog","description":"Les types de retour sont un m\u00e9canisme introduit dans la version 7 de PHP. Ils constituent une \u00e9tape importante dans le cycle de vie du langage PHP.","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.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/","og_locale":"fr_FR","og_type":"article","og_title":"PHP 7 : les types de retour - La Fabrique de code - Tech blog","og_description":"Les types de retour sont un m\u00e9canisme introduit dans la version 7 de PHP. Ils constituent une \u00e9tape importante dans le cycle de vie du langage PHP.","og_url":"https:\/\/www.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/","og_site_name":"La Fabrique de code - Tech blog","article_published_time":"2015-10-09T09:59:24+00:00","article_modified_time":"2015-10-12T11:53:40+00:00","og_image":[{"url":"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2015\/10\/Terminator-a-failli-ne-pas-dire-I-ll-be-back_portrait_w532.jpg"}],"author":"admin","twitter_card":"summary","twitter_creator":"@LaFabrique2Code","twitter_site":"@LaFabrique2Code","twitter_misc":{"\u00c9crit par":"admin","Dur\u00e9e de lecture estim\u00e9e":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/","url":"https:\/\/www.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/","name":"PHP 7 : les types de retour - La Fabrique de code - Tech blog","isPartOf":{"@id":"https:\/\/www.lafabriquedecode.com\/blog\/#website"},"datePublished":"2015-10-09T09:59:24+00:00","dateModified":"2015-10-12T11:53:40+00:00","author":{"@id":"https:\/\/www.lafabriquedecode.com\/blog\/#\/schema\/person\/83863c048b82fd9ccf6407bddd241162"},"description":"Les types de retour sont un m\u00e9canisme introduit dans la version 7 de PHP. Ils constituent une \u00e9tape importante dans le cycle de vie du langage PHP.","breadcrumb":{"@id":"https:\/\/www.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lafabriquedecode.com\/blog\/2015\/10\/php-7-les-types-de-retour\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.lafabriquedecode.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PHP 7 : les types de retour"}]},{"@type":"WebSite","@id":"https:\/\/www.lafabriquedecode.com\/blog\/#website","url":"https:\/\/www.lafabriquedecode.com\/blog\/","name":"La Fabrique de code - Tech blog","description":"PHP objet, MySQL, Design Patterns, OOP...et plus !","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lafabriquedecode.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/www.lafabriquedecode.com\/blog\/#\/schema\/person\/83863c048b82fd9ccf6407bddd241162","name":"admin","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.lafabriquedecode.com\/blog\/#\/schema\/person\/image\/","url":"http:\/\/0.gravatar.com\/avatar\/fc2e1de7c8a1871b50ff9c6a6f8682a2?s=96&d=retro&r=g","contentUrl":"http:\/\/0.gravatar.com\/avatar\/fc2e1de7c8a1871b50ff9c6a6f8682a2?s=96&d=retro&r=g","caption":"admin"},"url":"http:\/\/www.lafabriquedecode.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/posts\/1039"}],"collection":[{"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/comments?post=1039"}],"version-history":[{"count":19,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/posts\/1039\/revisions"}],"predecessor-version":[{"id":1059,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/posts\/1039\/revisions\/1059"}],"wp:attachment":[{"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/media?parent=1039"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/categories?post=1039"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/tags?post=1039"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}