{"id":78525,"date":"2024-11-08T14:36:12","date_gmt":"2024-11-08T13:36:12","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=78525&#038;preview=true&#038;preview_id=78525"},"modified":"2024-11-11T10:30:12","modified_gmt":"2024-11-11T09:30:12","slug":"php-8-4","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/","title":{"rendered":"PHP 8.4 : Voici les nouveaut\u00e9s et les am\u00e9liorations"},"content":{"rendered":"<p>Il y a de l&rsquo;\u00e9pice de citrouille dans l&rsquo;air, il est donc temps de lancer une nouvelle version de <a href=\"https:\/\/kinsta.com\/php\">PHP<\/a>, le langage de script c\u00f4t\u00e9 serveur qui fait fonctionner notre CMS pr\u00e9f\u00e9r\u00e9, <a href=\"https:\/\/kinsta.com\/wordpress\">WordPress<\/a>. Avant le lancement de la version 8.4 le 21 novembre, les d\u00e9veloppeurs de PHP ont d\u00e9voil\u00e9 de nombreuses versions pr\u00e9liminaires de la nouvelle base de code, y compris une poign\u00e9e de versions candidates depuis le gel des fonctionnalit\u00e9s en ao\u00fbt.<\/p>\n<p>En plus des nouvelles fonctionnalit\u00e9s, des am\u00e9liorations et des d\u00e9pr\u00e9ciations, nous anticipons cette p\u00e9riode de l&rsquo;ann\u00e9e, 2024 a vu des ajustements au cycle de publication de PHP, avec la fin des versions de s\u00e9curit\u00e9 pour toutes les versions actuellement prises en charge synchronis\u00e9es \u00e0 la fin de l&rsquo;ann\u00e9e au lieu de son anniversaire GA.<\/p>\n<p>De plus, ce support a \u00e9t\u00e9 prolong\u00e9 d&rsquo;un an, ce qui signifie que vous pourriez utiliser PHP 8.4 en toute s\u00e9curit\u00e9 jusqu&rsquo;en 2028 (avec deux ans de s\u00e9curit\u00e9 et de corrections de bogues et deux ans de corrections de s\u00e9curit\u00e9 uniquement).<\/p>\n<p>Bien que vous puissiez passer plus de temps avec PHP 8.4, vous avez probablement envie de d\u00e9couvrir d\u00e8s maintenant les nouveaut\u00e9s de cette version. Alors, sautons dans le vif du sujet.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Nouvelles fonctionnalit\u00e9s et am\u00e9liorations de PHP 8.4<\/h2>\n<p>Les nouvelles fonctionnalit\u00e9s incluses dans la version <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/\">8.3 de PHP<\/a> l&rsquo;ann\u00e9e derni\u00e8re vous sembleront discr\u00e8tes par rapport \u00e0 certains des ajouts de la version 8.4 :<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"disc\" selector=\"h3\" count-number=\"6\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Hooks de propri\u00e9t\u00e9<\/h3>\n<p>Les hooks de propri\u00e9t\u00e9 apportent une toute nouvelle approche de la gestion des \u00ab getters \u00bb et des \u00ab setters \u00bb dans la <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-oop\/\">programmation orient\u00e9e objet (POO) de PHP<\/a>, te permettant de simplifier la structure de vos fichiers de classe.<\/p>\n<p>Pour illustrer ce que les hooks de propri\u00e9t\u00e9 peuvent remplacer, la classe simple ci-dessous comprend les propri\u00e9t\u00e9s <code>$size<\/code> et <code>$flavor<\/code>. Elles ont une visibilit\u00e9 de <code>private<\/code> pour les prot\u00e9ger d&rsquo;un acc\u00e8s direct en dehors de l&rsquo;objet r\u00e9sultant. C&rsquo;est pourquoi les m\u00e9thodes publiques getter et setter servent de m\u00e9diateur pour l&rsquo;acc\u00e8s aux propri\u00e9t\u00e9s :<\/p>\n<pre><code class=\"language-php\">class Coffee\n{\n    private string $size;\n    private string $flavor;\n    public function __construct(string $size, string $flavor) {\n        $this-&gt;size   = $size;\n        $this-&gt;flavor = $flavor;\n    }\n\n    \/\/ \"Setting\" coffee size and flavor\n    public function setSize(string $size): void {\n        $this-&gt;size = $size;\n    }\n    public function setFlavor(string $flavor): void {\n        $this-&gt;flavor = $flavor;\n    }\n\n    \/\/ \"Getting\" coffee size and flavor\n    public function getSize(): string {\n        return $this-&gt;size;\n    }\n    public function getFlavor(): string {\n        return $this-&gt;flavor;\n    }\n} \/\/ End of class\n\n\/\/ Make some coffee\n$coffee = new Coffee('Small', 'Pumpkin Spice');\nprint $coffee-&gt;getSize() . ' ' . $coffee-&gt;getFlavor(); \/\/ Prints \"Small Pumpkin Spice\"\n\n\/\/ Change order\n$coffee-&gt;setSize('Grande');\n$coffee-&gt;setFlavor('Mocha');\nprint $coffee-&gt;getSize() . ' ' . $coffee-&gt;getFlavor(); \/\/ Prints \"Grande Mocha\"<\/code><\/pre>\n<p>Ou alors, votre classe a beaucoup de propri\u00e9t\u00e9s, et au lieu d&rsquo;\u00e9crire de nombreuses m\u00e9thodes getter et setter, vous utilisez les m\u00e9thodes magiques de PHP <code>_get<\/code> et <code>_set<\/code>. Vous pourriez m\u00eame r\u00e9gler les choses dans une d\u00e9claration <code>switch<\/code> quelque peu d\u00e9sordonn\u00e9e, comme dans l&rsquo;extrait ci-dessous.<\/p>\n<pre><code class=\"language-php\">\/\/ __set magic method example\npublic function __set(string $key, $value): void \n    switch ($key) {\n        case 'size':\n            $this-&gt;size = $value;\n            break;\n        case 'flavor':\n            $this-&gt;flavor = $value;\n            break;\n        default:\n            throw new InvalidArgumentException('Invalid input');\n        }\n}\n\n\/\/ Later, we can change the coffee order like this:\n$coffee-&gt;size = 'Grande';\n$coffee-&gt;flavor = 'Mocha';<\/code><\/pre>\n<p>Quelle que soit l&rsquo;approche que vous choisissiez, plus vous avez de propri\u00e9t\u00e9s dans votre classe, plus le code utilis\u00e9 pour les manipuler sera \u00e9loign\u00e9 de leurs d\u00e9finitions situ\u00e9es en haut de votre fichier de classe. De plus, certaines impl\u00e9mentations des m\u00e9thodes magiques <code>_get<\/code> et <code>_set<\/code> peuvent inopin\u00e9ment donner acc\u00e8s \u00e0 des propri\u00e9t\u00e9s priv\u00e9es ou prot\u00e9g\u00e9es de votre objet que vous n&rsquo;aviez pas l&rsquo;intention d&rsquo;exposer.<\/p>\n<p>La nouvelle fonction de hooks de propri\u00e9t\u00e9 regroupe les fonctionnalit\u00e9s d&rsquo;obtention et de d\u00e9finition avec les propri\u00e9t\u00e9s elles-m\u00eames. Dans l&rsquo;exemple de hooks de propri\u00e9t\u00e9 ci-dessous, vous remarquerez que les propri\u00e9t\u00e9s <code>$size<\/code> et <code>$flavor<\/code> de la classe Coffee sont d\u00e9sormais publiques. Mais nous avons \u00e9galement ajout\u00e9 une validation de base aux hooks <code>set<\/code>, pour les diff\u00e9rencier des affectations directes.<\/p>\n<pre><code class=\"language-php\">\/\/ Property definitions at the top of our Coffee class\nclass Coffee\n{\n    public string $flavor {\n        set(string $value) {\n            if (strlen($value) &gt; 16) throw new InvalidArgumentException('Input is too long');\n                $this-&gt;flavor = $value;\n        }\n    }\n\n    public string $size {\n        set(string $value) {\n            if (! in_array($value, array(\u2018Small\u2019, \u2018Grande\u2019))) throw new InvalidArgumentException('Not a valid size');\n                $this-&gt;size = $value;\n        }\n    }\n\n    \/\/ Rest of the Coffee class\n}\n\n\/\/ Define a coffee\n$coffee = new Coffee();\n$coffee-&gt;size = 'Grande';\n$coffee-&gt;flavor = 'Pumpkin spice';<\/code><\/pre>\n<p>De m\u00eame, comme vous pouvez le voir ci-dessous, un hook <code>get<\/code> peut int\u00e9grer des fonctionnalit\u00e9s dans ce qui semble \u00eatre une r\u00e9f\u00e9rence ordinaire \u00e0 une propri\u00e9t\u00e9 d&rsquo;objet.<\/p>\n<pre><code class=\"language-php\">\/\/ Simplified Coffee class\nclass Coffee\n{\n    public string $flavor {\n        get { \n            return $this-&gt;flavor . ' Spice';\n       }\n    }\n}\n\n\/\/ Create a flavor \n$coffee = new Coffee();\n$coffee-&gt;flavor = 'Pumpkin'; \/\/ Stores the value \"Pumpkin\"\nprint $coffee-&gt;flavor;       \/\/ Prints \"Pumpkin Spice\"<\/code><\/pre>\n<p>Contrairement aux m\u00e9thodes magiques de PHP, les hooks de propri\u00e9t\u00e9 peuvent \u00eatre utilis\u00e9s dans les interfaces et les classes abstraites. Un exemple d&rsquo;interface :<\/p>\n<pre><code class=\"language-php\">interface Coffee\n{\n    public string $size { get; set; }\n    public string $flavor { get; set; }\n}<\/code><\/pre>\n<h3>Visibilit\u00e9 asym\u00e9trique<\/h3>\n<p>Les m\u00e9thodes getter et setter publiquement visibles que nous avons examin\u00e9es plus t\u00f4t repr\u00e9sentent l&rsquo;approche traditionnelle de l&rsquo;acc\u00e8s aux propri\u00e9t\u00e9s priv\u00e9es et prot\u00e9g\u00e9es au sein de leurs classes.<\/p>\n<p>Une fonctionnalit\u00e9 int\u00e9ressante de PHP 8.4 est la possibilit\u00e9 pour une propri\u00e9t\u00e9 d&rsquo;avoir diff\u00e9rents niveaux de visibilit\u00e9 en fonction du contexte dans lequel elle est acc\u00e9d\u00e9e. Ainsi, une propri\u00e9t\u00e9 peut \u00eatre publique lorsqu&rsquo;elle est lue, mais priv\u00e9e ou prot\u00e9g\u00e9e lorsqu&rsquo;elle est d\u00e9finie.<\/p>\n<p>Regardez \u00e7a :<\/p>\n<pre><code class=\"language-php\">class Coffee\n{\n    public private(set) string $flavor = 'Pumpkin Spice';\n}\n\n$coffee = new Coffee();\nprint $coffee-&gt;flavor;     \/\/ Prints \"Pumpkin Spice\"\n$coffee-&gt;flavor = 'Mocha';  \/\/ Error (visibility)<\/code><\/pre>\n<p>Ci-dessus, la propri\u00e9t\u00e9 <code>$flavor<\/code> de la classe est publique, sauf dans un contexte de d\u00e9finition. C&rsquo;est d\u00e9j\u00e0 assez simple, mais la visibilit\u00e9 asym\u00e9trique a m\u00eame un petit raccourci :<\/p>\n<pre><code class=\"language-php\">class Coffee\n{\n    \/\/ public is assumed when the context is not setting\n    private(set) string $flavor = 'Pumpkin Spice';\n}<\/code><\/pre>\n<p>Vous pouvez utiliser les hooks de propri\u00e9t\u00e9 et la visibilit\u00e9 asym\u00e9trique en combinaison pour obtenir une \u00e9norme flexibilit\u00e9 dans le travail avec des propri\u00e9t\u00e9s d&rsquo;objets de diff\u00e9rentes visibilit\u00e9s.<\/p>\n<h3>Enchainer <code>new<\/code> sans parenth\u00e8ses<\/h3>\n<p>En parlant de raccourcis, l&rsquo;appel de <code>new<\/code> et l\u2019enchainement de m\u00e9thodes n\u00e9cessitaient auparavant de placer l&rsquo;invocation entre parenth\u00e8ses, comme ceci :<\/p>\n<pre><code class=\"language-php\">$coffee = (new Coffee())-&gt;getFlavor()-&gt;getSize();<\/code><\/pre>\n<p>PHP 8.4 le permet :<\/p>\n<pre><code class=\"language-php\">$coffee = new Coffee()-&gt;getFlavor()-&gt;getSize();<\/code><\/pre>\n<p>Cela peut sembler \u00eatre un changement mineur, mais le fait de laisser tomber seulement deux parenth\u00e8ses rend cela beaucoup plus facile \u00e0 lire et \u00e0 d\u00e9boguer.<\/p>\n<h3>Nouvelles fonctions pour trouver les \u00e9l\u00e9ments d&rsquo;un tableau<\/h3>\n<p>Au rayon \u00ab Vous voulez dire qu&rsquo;on ne pouvait pas d\u00e9j\u00e0 faire \u00e7a ? \u00bb, PHP 8.4 introduit la fonction <code>array_find()<\/code>, qui permet de rechercher dans un tableau les \u00e9l\u00e9ments correspondant aux conditions exprim\u00e9es dans une fonction de rappel. La fonction renvoie la valeur du premier \u00e9l\u00e9ment correspondant au test de la fonction de rappel.<\/p>\n<p>La nouvelle version comprend trois autres fonctions connexes :<\/p>\n<ul>\n<li><code>array_find_key()<\/code>: Comme <code>array_find()<\/code>, mais la valeur de retour est la cl\u00e9 de l&rsquo;\u00e9l\u00e9ment correspondant au lieu de la valeur de l&rsquo;\u00e9l\u00e9ment lui-m\u00eame.<\/li>\n<li><code>array_all()<\/code>: Renvoie <code>true<\/code> si <em>chaque<\/em> \u00e9l\u00e9ment du tableau test\u00e9 correspond au test du rappel.<\/li>\n<li><code>array_any()<\/code>: Renvoie <code>true<\/code> si <em>au moins un<\/em> des \u00e9l\u00e9ments du tableau correspond au test de la fonction de rappel.<\/li>\n<\/ul>\n<p>Notez que les deux derni\u00e8res fonctions renvoient des indicateurs bool\u00e9ens au lieu des cl\u00e9s ou du contenu du tableau.<\/p>\n<p>Voici quelques exemples rapides :<\/p>\n<pre><code class=\"language-php\">$array = [\n    'a' =&gt; 'Mocha',\n    'b' =&gt; 'Caramel',\n    'c' =&gt; 'Maple',\n    'd' =&gt; 'Pumpkin'\n   ];\n\n\/\/ Find the first flavor name that is 5 characters long\nvar_dump(array_find($array, function (string $value) {\n    return strlen($value) == 5;\n})); \/\/ Returns \u201cMocha,\u201d even though \u201cMaple\u201d is the same length \n\n\/\/ Find the array key for the first flavor with a name longer than 5 characters.\nvar_dump(array_find_key($array, function (string $value) {\n    return strlen($value) &gt; 5;\n})); \/\/ Returns \u201cb\u201d\n\n\/\/ Check to see if any flavor name is less than 5 characters long\nvar_dump(array_any($array, function (string $value) {\n    return strlen($value) &lt; 5;\n})); \/\/ Returns false\n\n\/\/ Check to see if all flavor names are shorter than 8 characters\nvar_dump(array_all($array, function (string $value) {\n    return strlen($value) &lt; 8;\n})); \/\/ Returns true<\/code><\/pre>\n<h3>Analyse HTML5<\/h3>\n<p>HTM5 est la norme de facto pour la structure des pages web modernes, mais la technologie d&rsquo;analyse du mod\u00e8le d&rsquo;objet de document (DOM) de PHP s&rsquo;\u00e9tait arr\u00eat\u00e9e \u00e0 HTML 4.01.<\/p>\n<p>Plut\u00f4t que de mettre \u00e0 jour la classe <code>DOMDocument<\/code> existante qui fonctionne avec les anciennes normes HTML, PHP 8.4 est livr\u00e9 avec une nouvelle classe <code>DomHTMLDocument<\/code> qui est pr\u00eate pour le HTM5.<\/p>\n<p>Vous pouvez importer le contenu d&rsquo;une page HTML5 comme ceci :<\/p>\n<pre><code class=\"language-php\">$document = DomHTMLDocument::createFromString($html)<\/code><\/pre>\n<p>En plus du constructeur <code>createFromString($html)<\/code> ci-dessus, la classe supporte \u00e9galement <code>createFromFile($path)<\/code> et <code>createEmpty()<\/code><\/p>\n<p>Le nouvel analyseur reconnait les balises HTML5 s\u00e9mantiques telles que <code>main<\/code>, <code>article<\/code> et <code>section<\/code> qui sont maintenant famili\u00e8res \u00e0 la plupart d&rsquo;entre nous.<\/p>\n<h3>Fonctions de d\u00e9coupage multi-octets<\/h3>\n<p>Un autre ajout de PHP 8.4 qui semble avoir \u00e9t\u00e9 attendu depuis longtemps est la prise en charge de plusieurs octets dans les fonctions de d\u00e9coupage :<\/p>\n<ul>\n<li><code>mb_trim()<\/code><\/li>\n<li><code>mb_ltrim()<\/code><\/li>\n<li><code>mb_rtrim()<\/code><\/li>\n<\/ul>\n<p>Comme la fonction PHP <code>trim()<\/code> qui existe depuis longtemps, <code>mb_trim<\/code> supprime les espaces blancs et certains caract\u00e8res sp\u00e9ciaux, comme les sauts de ligne, des deux extr\u00e9mit\u00e9s d&rsquo;une chaine qui peut contenir des caract\u00e8res multi-octets. Les autres fonctions suppriment soit l&rsquo;extr\u00e9mit\u00e9 gauche, soit l&rsquo;extr\u00e9mit\u00e9 droite d&rsquo;une chaine.<\/p>\n<h2>D\u00e9pr\u00e9ciations en PHP 8.4<\/h2>\n<p>Chaque version de PHP s&rsquo;accompagne d&rsquo;une liste de caract\u00e9ristiques et de fonctions (certaines assez obscures) qui sont signal\u00e9es comme devant \u00eatre retir\u00e9es de la plate-forme. L&rsquo;une des d\u00e9pr\u00e9ciations les plus m\u00e9diatis\u00e9es de PHP 8.4 est le suivi de session sans cookie.<\/p>\n<h3>D\u00e9pr\u00e9ciation des sessions GET\/POST<\/h3>\n<p>Bien que <a href=\"https:\/\/kinsta.com\/fr\/blog\/cookies-sessions-php-wordpress\/\">les cookies<\/a> soient g\u00e9n\u00e9ralement la m\u00e9thode pr\u00e9f\u00e9r\u00e9e pour suivre les sessions des utilisateurs, PHP a pris en charge la fixation des donn\u00e9es d&rsquo;identification de session dans les param\u00e8tres GET\/POST. Pour permettre le suivi de session via des param\u00e8tres dans les URL, le param\u00e8tre PHP <code>session.use_only_cookies<\/code> est d\u00e9sactiv\u00e9, et le param\u00e8tre <code>session.use_trans_sid<\/code> peut \u00eatre activ\u00e9.<\/p>\n<p>Avec PHP 8.4, l&rsquo;un ou l&rsquo;autre de ces param\u00e8tres d\u00e9clenche un avertissement de d\u00e9pr\u00e9ciation qui peut apparaitre dans les journaux de votre site. Lorsque PHP 9 sera publi\u00e9, ces param\u00e8tres ne seront plus disponibles.<\/p>\n<h3>Autres d\u00e9pr\u00e9ciations (et suppressions) en PHP 8.4<\/h3>\n<p>Vous trouverezs ci-dessous une liste de fonctionnalit\u00e9s que l&rsquo;\u00e9quipe responsable de PHP 8.4 a d\u00e9cid\u00e9 de supprimer. (Certaines incluent des liens vers plus d&rsquo;informations sur les fonctionnalit\u00e9s&#8230;,<\/p>\n<ul>\n<li>D\u00e9pr\u00e9ciation formelle des propri\u00e9t\u00e9s <code>DOMDocument<\/code> et <code>DOMEntity<\/code>.<\/li>\n<li>Suppression de <code>DOMImplementation::getFeature($feature, $version)<\/code>.<\/li>\n<li>D\u00e9class\u00e9 la constante <code>DOM_PHP_ERR<\/code>.<\/li>\n<li>D\u00e9class\u00e9 La balise \u00ab\u00a0S\u00a0\u00bb dans <code><a href=\"http:\/\/www.php.net\/unserialize\" target=\"_blank\" rel=\"noopener noreferrer\">unserialize<\/a>()<\/code>.<\/li>\n<li>D\u00e9pr\u00e9ciation de <code>session.sid_length<\/code> et <code>session.sid_bits_per_character<\/code>.<\/li>\n<li>D\u00e9classement de <code>SplFixedArray::__wakeup()<\/code>.<\/li>\n<li>D\u00e9classer <code><a href=\"http:\/\/www.php.net\/xml_set_object\" target=\"_blank\" rel=\"noopener noreferrer\">xml_set_object()<\/a><\/code> et <code>xml_set_*_handler()<\/code> avec les noms de m\u00e9thodes en chaine.<\/li>\n<li>D\u00e9classer le passage de null et false \u00e0 <code><a href=\"http:\/\/www.php.net\/dba_key_split\" target=\"_blank\" rel=\"noopener noreferrer\">dba_key_split()<\/a><\/code>.<\/li>\n<li>D\u00e9classer le passage de types de donn\u00e9es incorrects pour les options des fonctions ext\/hash.<\/li>\n<li>D\u00e9classer les constantes <code>SUNFUNCS_RET_STRING<\/code>, <code>SUNFUNCS_RET_DOUBLE<\/code>, <code>SUNFUNCS_RET_TIMESTAMP<\/code>.<\/li>\n<li>Suppression du m\u00e9canisme d&rsquo;\u00e9chappement CSV propri\u00e9taire.<\/li>\n<li>D\u00e9classement de la constante <code>E_STRICT<\/code>.<\/li>\n<li>D\u00e9classer <code><a href=\"http:\/\/www.php.net\/strtok\" target=\"_blank\" rel=\"noopener noreferrer\">strtok()<\/a><\/code>.<\/li>\n<li>D\u00e9classer le renvoi de valeurs autres que des chaines \u00e0 partir d&rsquo;un gestionnaire de sortie utilisateur.<\/li>\n<li>D\u00e9classer la production de sortie dans un gestionnaire de sortie utilisateur.<\/li>\n<li>D\u00e9classer <code><a href=\"http:\/\/www.php.net\/file_put_contents\" target=\"_blank\" rel=\"noopener noreferrer\">file_put_contents()<\/a><\/code> avec <code>$data<\/code> en tant que tableau.<\/li>\n<li>D\u00e9pr\u00e9cier <code><a href=\"http:\/\/www.php.net\/mysqli_ping\" target=\"_blank\" rel=\"noopener noreferrer\">mysqli_ping()<\/a><\/code> et <code>mysqli::ping()<\/code><\/li>\n<li>D\u00e9pr\u00e9cier <code>mysqli_refresh()<\/code>.<\/li>\n<li>D\u00e9pr\u00e9cier <code><a href=\"http:\/\/www.php.net\/mysqli_kill\" target=\"_blank\" rel=\"noopener noreferrer\">mysqli_kill()<\/a><\/code>.<\/li>\n<li>D\u00e9classer le deuxi\u00e8me param\u00e8tre de <code><a href=\"http:\/\/www.php.net\/mysqli_store_result\" target=\"_blank\" rel=\"noopener noreferrer\">mysqli_store_result()<\/a><\/code>.<\/li>\n<li>D\u00e9classer <code><a href=\"http:\/\/www.php.net\/lcg_value\" target=\"_blank\" rel=\"noopener noreferrer\">lcg_value()<\/a><\/code>.<\/li>\n<li>D\u00e9pr\u00e9cier <code><a href=\"http:\/\/www.php.net\/uniqid\" target=\"_blank\" rel=\"noopener noreferrer\">uniqid()<\/a><\/code>.<\/li>\n<li>D\u00e9pr\u00e9cier <code><a href=\"http:\/\/www.php.net\/md5\" target=\"_blank\" rel=\"noopener noreferrer\">md5()<\/a><\/code>, <code><a href=\"http:\/\/www.php.net\/sha1\" target=\"_blank\" rel=\"noopener noreferrer\">sha1()<\/a><\/code>, <code><a href=\"http:\/\/www.php.net\/md5_file\" target=\"_blank\" rel=\"noopener noreferrer\">md5_file()<\/a><\/code>et <code><a href=\"http:\/\/www.php.net\/sha1_file\" target=\"_blank\" rel=\"noopener noreferrer\">sha1_file()<\/a><\/code>.<\/li>\n<li>D\u00e9pr\u00e9cier le passage de <code>E_USER_ERROR<\/code> \u00e0 <code><a href=\"http:\/\/www.php.net\/trigger_error\" target=\"_blank\" rel=\"noopener noreferrer\">trigger_error()<\/a><\/code>.<\/li>\n<li>D\u00e9pr\u00e9cier l&rsquo;utilisation d&rsquo;un seul trait de soulignement (\u00ab\u00a0_\u00a0\u00bb) comme nom de classe.<\/li>\n<li>D\u00e9pr\u00e9cier la constante <code>SOAP_FUNCTIONS_ALL<\/code> et la passer \u00e0 <code>SoapServer::addFunction()<\/code>.<\/li>\n<\/ul>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>PHP 8.4 apporte quelques changements int\u00e9ressants. Nous sommes impatients d&rsquo;installer cette version sur nos serveurs pour notre <a href=\"https:\/\/kinsta.com\/fr\/blog\/comparaison-php\/\">analyse comparative annuelle de PHP<\/a> &#8211; nos tests avec divers <a href=\"https:\/\/kinsta.com\/fr\/blog\/frameworks-php\/\">syst\u00e8mes de gestion de contenu bas\u00e9s sur PHP<\/a>.<\/p>\n<p>Nous sommes \u00e9galement impatients de voir quand <a href=\"https:\/\/kinsta.com\/fr\/blog\/types-de-developpeurs\/\">les d\u00e9veloppeurs<\/a> commenceront \u00e0 int\u00e9grer certaines des nouvelles fonctionnalit\u00e9s de PHP 8.4 dans leurs projets, en particulier les hooks de propri\u00e9t\u00e9.<\/p>\n<p><em>Quelles sont les fonctionnalit\u00e9s de PHP 8.4 que tu pr\u00e9f\u00e8res ? Partagez vos id\u00e9es avec notre communaut\u00e9 dans les commentaires !<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il y a de l&rsquo;\u00e9pice de citrouille dans l&rsquo;air, il est donc temps de lancer une nouvelle version de PHP, le langage de script c\u00f4t\u00e9 serveur &#8230;<\/p>\n","protected":false},"author":259,"featured_media":78526,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[999,1000],"class_list":["post-78525","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-fonction-php","topic-mises-a-jour-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PHP 8.4 : voici les nouveaut\u00e9s et les am\u00e9liorations<\/title>\n<meta name=\"description\" content=\"Si c&#039;est l&#039;automne, c&#039;est qu&#039;il est temps de sortir une nouvelle version de PHP. Voici les principales nouveaut\u00e9s de la version 8.4 de 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:\/\/kinsta.com\/fr\/blog\/php-8-4\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP 8.4 : Voici les nouveaut\u00e9s et les am\u00e9liorations\" \/>\n<meta property=\"og:description\" content=\"Si c&#039;est l&#039;automne, c&#039;est qu&#039;il est temps de sortir une nouvelle version de PHP. Voici les principales nouveaut\u00e9s de la version 8.4 de PHP.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-08T13:36:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-11T09:30:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/11\/what-is-new-in-php-8-4.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Steve Bonisteel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Si c&#039;est l&#039;automne, c&#039;est qu&#039;il est temps de sortir une nouvelle version de PHP. Voici les principales nouveaut\u00e9s de la version 8.4 de PHP.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/11\/what-is-new-in-php-8-4-1024x512.png\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"PHP 8.4 : Voici les nouveaut\u00e9s et les am\u00e9liorations\",\"datePublished\":\"2024-11-08T13:36:12+00:00\",\"dateModified\":\"2024-11-11T09:30:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/\"},\"wordCount\":1689,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/11\/what-is-new-in-php-8-4.png\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/\",\"name\":\"PHP 8.4 : voici les nouveaut\u00e9s et les am\u00e9liorations\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/11\/what-is-new-in-php-8-4.png\",\"datePublished\":\"2024-11-08T13:36:12+00:00\",\"dateModified\":\"2024-11-11T09:30:12+00:00\",\"description\":\"Si c'est l'automne, c'est qu'il est temps de sortir une nouvelle version de PHP. Voici les principales nouveaut\u00e9s de la version 8.4 de PHP.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/11\/what-is-new-in-php-8-4.png\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/11\/what-is-new-in-php-8-4.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mises \u00e0 jour PHP\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/mises-a-jour-php\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"PHP 8.4 : Voici les nouveaut\u00e9s et les am\u00e9liorations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"caption\":\"Steve Bonisteel\"},\"description\":\"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PHP 8.4 : voici les nouveaut\u00e9s et les am\u00e9liorations","description":"Si c'est l'automne, c'est qu'il est temps de sortir une nouvelle version de PHP. Voici les principales nouveaut\u00e9s de la version 8.4 de 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:\/\/kinsta.com\/fr\/blog\/php-8-4\/","og_locale":"fr_FR","og_type":"article","og_title":"PHP 8.4 : Voici les nouveaut\u00e9s et les am\u00e9liorations","og_description":"Si c'est l'automne, c'est qu'il est temps de sortir une nouvelle version de PHP. Voici les principales nouveaut\u00e9s de la version 8.4 de PHP.","og_url":"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2024-11-08T13:36:12+00:00","article_modified_time":"2024-11-11T09:30:12+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/11\/what-is-new-in-php-8-4.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"Si c'est l'automne, c'est qu'il est temps de sortir une nouvelle version de PHP. Voici les principales nouveaut\u00e9s de la version 8.4 de PHP.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/11\/what-is-new-in-php-8-4-1024x512.png","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Steve Bonisteel","Dur\u00e9e de lecture estim\u00e9e":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"PHP 8.4 : Voici les nouveaut\u00e9s et les am\u00e9liorations","datePublished":"2024-11-08T13:36:12+00:00","dateModified":"2024-11-11T09:30:12+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/"},"wordCount":1689,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/11\/what-is-new-in-php-8-4.png","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/","url":"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/","name":"PHP 8.4 : voici les nouveaut\u00e9s et les am\u00e9liorations","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/11\/what-is-new-in-php-8-4.png","datePublished":"2024-11-08T13:36:12+00:00","dateModified":"2024-11-11T09:30:12+00:00","description":"Si c'est l'automne, c'est qu'il est temps de sortir une nouvelle version de PHP. Voici les principales nouveaut\u00e9s de la version 8.4 de PHP.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/php-8-4\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/11\/what-is-new-in-php-8-4.png","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/11\/what-is-new-in-php-8-4.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Mises \u00e0 jour PHP","item":"https:\/\/kinsta.com\/fr\/sujets\/mises-a-jour-php\/"},{"@type":"ListItem","position":3,"name":"PHP 8.4 : Voici les nouveaut\u00e9s et les am\u00e9liorations"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","caption":"Steve Bonisteel"},"description":"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.","url":"https:\/\/kinsta.com\/fr\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/78525","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=78525"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/78525\/revisions"}],"predecessor-version":[{"id":78535,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/78525\/revisions\/78535"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/78525\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/78525\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/78525\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/78525\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/78525\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/78525\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/78525\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/78525\/translations\/es"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/78525\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/78526"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=78525"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=78525"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=78525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}