{"id":21576,"date":"2018-10-29T04:31:40","date_gmt":"2018-10-29T11:31:40","guid":{"rendered":"https:\/\/kinsta.com\/?p=31095"},"modified":"2024-09-20T10:06:22","modified_gmt":"2024-09-20T09:06:22","slug":"php-7-3","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/","title":{"rendered":"Quoi de neuf dans PHP 7.3 (Maintenant disponible chez Kinsta)"},"content":{"rendered":"<p>A partir du 6 d\u00e9cembre 2018, la derni\u00e8re et plus grande version, PHP 7.3 est arriv\u00e9e ! Avec lui viennent de nouvelles fonctionnalit\u00e9s utiles, des fonctionnalit\u00e9s, des suppressions, un bon nombre de corrections de bogues et un boost de performances. <strong>PHP 7.3 aussi maintenant disponible pour tous les clients Kinsta<\/strong> dans le <a href=\"https:\/\/my.kinsta.com\/sites\/tools\/?lang=fr\" target=\"_blank\" rel=\"noopener noreferrer\">tableau de bord MyKinsta<\/a>. \ud83e\udd18<\/p>\n<p><strong>Mise \u00e0 jour :<\/strong> <a href=\"\/\/kinsta.com\/feature-updates\/php-8-1\/\">PHP 8.1 (version officielle)<\/a> est maintenant disponible pour tous les clients Kinsta. PHP 7.3 n&rsquo;est plus support\u00e9 par Kinsta. Veuillez noter que nous supportons les versions de PHP 7.4, 8.0, 8.1, 8.2, 8.3, 8.4 et 8.5.<\/p>\n<p>Dans cet article, nous vous donnerons un aper\u00e7u des caract\u00e9ristiques et des changements que nous jugeons personnellement les plus pertinents. Mais vous pouvez toujours consulter la liste compl\u00e8te des fonctionnalit\u00e9s, changements et corrections de bugs dans les <a href=\"https:\/\/github.com\/php\/php-src\/blob\/php-7.3.0beta1\/UPGRADING\" target=\"_blank\" rel=\"noopener noreferrer\">notes de mise \u00e0 jour de PHP 7.3<\/a>\u00a0et les <a href=\"https:\/\/wiki.php.net\/rfc#php_73\" target=\"_blank\" rel=\"noopener noreferrer\">demandes de commentaires sur PHP 7.3<\/a>.<\/p>\n\n<h2>Quoi de neuf dans PHP 7.3?<\/h2>\n<p>Dans cet article, nous couvrons les changements suivants de PHP 7.3 :<\/p>\n<ul>\n<li><a href=\"#flexible-heredoc-nowdoc\">Impl\u00e9mentation des syntaxes flexibles Heredoc et Nowdoc<\/a><\/li>\n<li><a href=\"#trailing-comma-in-function-calls\">Autorisation des virgules dans les appels d\u2019une fonction<\/a><\/li>\n<li><a href=\"#JSON_THROW_ON_ERROR\">JSON_THROW_ON_ERROR<\/a><\/li>\n<li><a href=\"#list\">list() Affectation de r\u00e9f\u00e9rence<\/a><\/li>\n<li><a href=\"#is-countable\">Fonction is_countable<\/a><\/li>\n<li><a href=\"#array-key-first-last\">array_key_first(), array_key_last()<\/a><\/li>\n<li><a href=\"#argon2\">Am\u00e9liorations apport\u00e9es \u00e0 Argon2 Password Hash<\/a><\/li>\n<li><a href=\"#deprecations\">D\u00e9pr\u00e9ciations<\/a><\/li>\n<\/ul>\n<h2 id=\"flexible-heredoc-nowdoc\"><strong>Syntaxes flexibles Heredoc et Nowdoc<\/strong><\/h2>\n<p>C&rsquo;est probablement l&rsquo;une des am\u00e9liorations les plus pertinentes de PHP 7.3, et nous pensons qu&rsquo;elle m\u00e9rite un peu plus d&rsquo;attention. Donc, avant de plonger dans les changements de PHP 7.3 heredoc\/nowdoc, nous allons vous donner un bref aper\u00e7u de cette fonctionnalit\u00e9 de base utile. Si vous \u00eates d\u00e9j\u00e0 en confiance avec nowdoc et heredoc, n&rsquo;h\u00e9sitez pas \u00e0 passer aux changements de PHP 7.3.<\/p>\n<ul>\n<li><a href=\"#heredoc-nowdoc-overview\">Vue d&rsquo;ensemble des syntaxes heredoc et nowdoc<\/a><\/li>\n<li><a href=\"#heredoc-nowdoc-indentation\">PHP 7.3 : Permet d&rsquo;indenter le marqueur de fermeture et de supprimer l&rsquo;espace de l\u2019en-t\u00eate.<\/a><\/li>\n<li><a href=\"#heredoc-nowdoc-closing-marker\">PHP 7.3 : Suppression de l&rsquo;exigence de nouvelle ligne de suivi du marqueur de cl\u00f4ture<\/a><\/li>\n<\/ul>\n<h3 id=\"heredoc-nowdoc-overview\"><strong>Vue d&rsquo;ensemble des syntaxes heredoc et nowdoc<\/strong><\/h3>\n<p><strong>La syntaxe heredoc permet d&rsquo;ajouter une grande quantit\u00e9 de texte sans avoir besoin d&rsquo;\u00e9chapper avec des choses comme les guillemets doubles<\/strong>. Un h\u00e9r\u00e9doc commence par <code>&lt;&lt;&lt;<\/code> suivi d&rsquo;un marqueur, et se termine par le m\u00eame marqueur suivi d&rsquo;un point-virgule. En voici un exemple :<\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token keyword\">print<\/span> <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token constant\">EOT<\/span>\n<span class=\"token punctuation\">Le texte heredoc se comporte comme une cha\u00eene \u00e0 guillemets doubles, sans les guillemets doubles.<\/span>\n<span class=\"token constant\">EOT<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n<p>Un nowdoc se comporte comme un h\u00e9r\u00e9doc, \u00e0 quelques exceptions pr\u00e8s :<\/p>\n<ul>\n<li>L&rsquo;identificateur est entre guillemets simples (<code>&lt;&lt;&lt;'EOT'<\/code>)<\/li>\n<li>Aucune analyse n&rsquo;est effectu\u00e9e \u00e0 l&rsquo;int\u00e9rieur d&rsquo;un nowdoc<\/li>\n<\/ul>\n<p>Voici un exemple de nowdoc :<\/p>\n<pre><code class=\"language-php\">print &lt;&lt;&lt;'EOT'\nNowdocs sont \u00e0 des cha\u00eenes \u00e0 simple guillemet ce que heredocs sont \u00e0 des cha\u00eenes \u00e0 double guillemet.\nEOT;<\/code><\/pre>\n<p>Heredocs et nowdocs partagent les m\u00eames r\u00e8gles r\u00e9gissant l&rsquo;utilisation du marqueur de fermeture :<\/p>\n<ol>\n<li>Le marqueur de fermeture doit commencer dans la premi\u00e8re colonne de la ligne.<\/li>\n<li>Le marqueur doit suivre les m\u00eames r\u00e8gles de nommage que n&rsquo;importe quelle autre \u00e9tiquette en PHP : il ne doit contenir que des caract\u00e8res alphanum\u00e9riques et des traits de soulignement, et doit commencer par un caract\u00e8re non num\u00e9rique ou un trait soulign\u00e9.<\/li>\n<\/ol>\n<p>Le <a href=\"http:\/\/php.net\/manual\/en\/language.types.string.php#language.types.string.syntax.heredoc\">manuel PHP<\/a> avertit :<\/p>\n<blockquote><p>Il est tr\u00e8s important de noter que la ligne avec l&rsquo;identificateur de fermeture ne doit contenir aucun autre caract\u00e8re, sauf un point-virgule (;). Cela signifie en particulier que l&rsquo;identificateur<em> ne doit pas \u00eatre indent\u00e9<\/em> et qu&rsquo;il ne doit pas y avoir d&rsquo;espaces ou de tabulations avant ou apr\u00e8s le point-virgule. Il est \u00e9galement important de comprendre que le premier caract\u00e8re avant l&rsquo;identificateur de fermeture doit \u00eatre une nouvelle ligne telle que d\u00e9finie par le syst\u00e8me d&rsquo;exploitation local. C&rsquo;est un probl\u00e8me sur les syst\u00e8mes UNIX, y compris MacOS. Le d\u00e9limiteur de fermeture doit \u00e9galement \u00eatre suivi d&rsquo;une nouvelle ligne.<\/p><\/blockquote>\n<p><strong>Syntaxe PHP 7.2 invalide :<\/strong><\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">foo<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">public<\/span> <span class=\"token variable\">$bar<\/span> <span class=\"token operator\">=<\/span> <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token constant\">EOT<\/span>\n    bar\n    <span class=\"token constant\">EOT<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<span class=\"token comment\">\/\/ L'identifiant ne doit pas \u00eatre indent\u00e9<\/span><\/code><\/pre>\n<p><strong>Syntaxe PHP 7.2 valide :<\/strong><\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">foo<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">public<\/span> <span class=\"token variable\">$bar<\/span> <span class=\"token operator\">=<\/span> <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token constant\">EOT<\/span>\nbar\n<span class=\"token constant\">EOT<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p>Pour \u00eatre bref, en PHP 7.2 :<\/p>\n<ul>\n<li>Le rep\u00e8re de fermeture ne doit pas \u00eatre en retrait<\/li>\n<li>La ligne avec le marqueur de fermeture ne doit pas contenir de caract\u00e8res tels que des espaces ou des tabulations.<\/li>\n<li>Le premier caract\u00e8re avant le marqueur de fermeture doit \u00eatre une nouvelle ligne.<\/li>\n<li>La marque de fermeture doit \u00eatre suivie d&rsquo;une nouvelle ligne<\/li>\n<\/ul>\n<p>Il est assez clair que les syntaxes heredoc et nowdoc sont assez restrictives, mais PHP 7.3 peut changer cela un peu avec les am\u00e9liorations suivantes<\/p>\n<h3 id=\"heredoc-nowdoc-indentation\">1. <strong>Permettre d&rsquo;indenter le marqueur de fermeture et de supprimer l&rsquo;espace de l\u2019en-t\u00eate<\/strong><\/h3>\n<p><strong>Avec PHP 7.3, nous sommes autoris\u00e9s \u00e0 indenter le marqueur de fermeture<\/strong>, et nous pouvons \u00e9crire en toute s\u00e9curit\u00e9 le code suivant :<\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">foo<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">public<\/span> <span class=\"token variable\">$bar<\/span> <span class=\"token operator\">=<\/span> <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token constant\">EOT<\/span>\n        bar\n    <span class=\"token constant\">EOT<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p>L&rsquo;indentation du marqueur de fermeture d\u00e9finit la quantit\u00e9 d&rsquo;espaces blancs (ou de tabulations) qui seront retir\u00e9s de chaque ligne du corps. Mais attention :<strong> le marqueur de fermeture ne doit jamais \u00eatre indent\u00e9 plus loin que n&rsquo;importe quelle autre ligne du corps<\/strong>.<\/p>\n<p>Voir le code ci-dessous :<\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">foo<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">public<\/span> <span class=\"token variable\">$bar<\/span> <span class=\"token operator\">=<\/span> <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token constant\">EOT<\/span>\n    bar\n        <span class=\"token constant\">EOT<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p>Le code ci-dessus \u00e9mettrait l&rsquo;erreur suivante :<\/p>\n<pre>Parse error: Invalid body indentation level (expecting an indentation at least ...) in %s on line %d<\/pre>\n<p>Les tabulations et les espaces nous permettent d&rsquo;indenter le corps du h\u00e9r\u00e9doc\/nowdoc au m\u00eame niveau que le code autour, et sans espaces inutiles devant chaque ligne du corps.<\/p>\n<p>Nous pouvons utiliser \u00e0 la fois des tabulations et des espaces pour l&rsquo;indentation, mais nous ne sommes pas autoris\u00e9s \u00e0 les utiliser entrem\u00eal\u00e9s. Cela signifie que<strong> nous devons utiliser les m\u00eames caract\u00e8res d&rsquo;indentation pour le marqueur de fermeture et toutes les lignes du corps<\/strong>. En cas de caract\u00e8res d&rsquo;indentation diff\u00e9rents, on s&rsquo;attendrait \u00e0 un type diff\u00e9rent d&rsquo;erreur (indentation invalide).<\/p>\n<h3 id=\"heredoc-nowdoc-closing-marker\">2. <strong>Suppression de l&rsquo;exigence de nouvelle ligne de suivi du marqueur de cl\u00f4ture<\/strong><\/h3>\n<p>Actuellement, une nouvelle ligne doit suivre le marqueur pour terminer le heredoc\/nowdoc. PHP 7.3 changera cela et nous permettra de terminer le heredoc\/nowdoc sur la m\u00eame ligne. Voici un exemple tir\u00e9 du RFC :<\/p>\n<p><strong>Syntaxe PHP 7.2 valide :<\/strong><\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token variable\">$values<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token constant\">END<\/span>\na\nb\nc\n<span class=\"token constant\">END<\/span>\n<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'d e f'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n<p><strong>Syntaxe PHP 7.3 valide :<\/strong><\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token variable\">$values<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token constant\">END<\/span>\na\nb\nc\n<span class=\"token constant\">END<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'d e f'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n<p>Quoi qu&rsquo;il en soit, soyez prudent lors du choix du nom de votre marqueur car \u00ab\u00a0occasionnellement\u00a0\u00bb vous pouvez vous attendre \u00e0 une erreur s&rsquo;il correspond \u00e0 un mot que vous avez utilis\u00e9 dans le corps du heredoc\/nowdoc (voir<a href=\"https:\/\/wiki.php.net\/rfc\/flexible_heredoc_nowdoc_syntaxes\"> RFC<\/a> et<a href=\"https:\/\/github.com\/php\/php-src\/blob\/php-7.3.0beta1\/UPGRADING#L33\"> GitHub<\/a> pour en savoir plus \u00e0 ce sujet).<\/p>\n<p>Les deux propositions ont \u00e9t\u00e9 adopt\u00e9es avec plus de 2\/3 des voix.<\/p>\n<h4>PHP 7.3 RFC<\/h4>\n<ul>\n<li><a href=\"https:\/\/wiki.php.net\/rfc\/flexible_heredoc_nowdoc_syntaxes\" target=\"_blank\" rel=\"noopener noreferrer\">Syntaxes flexibles Heredoc et Nowdoc<\/a><\/li>\n<\/ul>\n<p><strong>Ressources suppl\u00e9mentaires<\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/php.net\/manual\/en\/language.types.string.php#language.types.string.syntax.heredoc\">Syntaxe des cha\u00eenes de caract\u00e8res heredoc<\/a><\/li>\n<li><a href=\"http:\/\/php.net\/manual\/en\/language.types.string.php#language.types.string.syntax.nowdoc\">Syntaxe des cha\u00eenes Nowdoc<\/a><\/li>\n<\/ul>\n<h2 id=\"trailing-comma-in-function-calls\"><strong>Autoriser une virgule flottante dans les appels de fonction<\/strong><\/h2>\n<p>Les virgules flottantes (ou \u00ab\u00a0virgules finales\u00a0\u00bb) sont des virgules ajout\u00e9es \u00e0 une liste d&rsquo;\u00e9l\u00e9ments, de param\u00e8tres ou de propri\u00e9t\u00e9s et elles sont utiles dans les contextes o\u00f9 de nouvelles valeurs sont ajout\u00e9es fr\u00e9quemment car elles emp\u00eachent les erreurs dues \u00e0 une virgule manquante. En PHP, les virgules sont permises dans les tableaux, et \u00e0 partir de <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-7-2\/\">PHP 7.2<\/a> elles sont permises dans les espaces de noms group\u00e9s.<\/p>\n<p>A partir de PHP 7.3, ces virgules seront autoris\u00e9es dans les d\u00e9clarations de fonctions. Les <a href=\"https:\/\/en.wikipedia.org\/wiki\/Variadic_function\">fonctions Variadic<\/a> fournissent un exemple de contexte o\u00f9 ces virgules sont extr\u00eamement utiles :<\/p>\n<pre><code class=\"language-php\">foo(\n    $bar,\n    $baz,\n);<\/code><\/pre>\n<p>Nous pouvons utiliser une virgule de fin quand nous cr\u00e9ons un tableau avec <code>compact()<\/code>,\u00a0afin de retourner une cha\u00eene format\u00e9e avec <code>sprintf()<\/code>, ou quand nous fusionnons un tableau :<\/p>\n<pre><code class=\"language-php\">$newArray = array_merge(\n    $arrayOne,\n    $arrayTwo,\n    ['foo', 'bar'],\n);<\/code><\/pre>\n<p>De plus, des virgules seront utiles pour le d\u00e9bogage :<\/p>\n<pre><code class=\"language-php\">var_dump(\n    $foo,\n    $bar,\n    $baz,\n);<\/code><\/pre>\n<p>Et ils sont puissants avec\u00a0<code>unset()<\/code>\u00a0et\u00a0<code>isset()<\/code>:<\/p>\n<pre><code class=\"language-php\">unset(\n    $foo,\n    $bar,\n    $baz,\n);\n\nisset(\n    $foo,\n    $bar,\n    $baz,\n);<\/code><\/pre>\n<p>Les virgules tra\u00eenantes seront \u00e9galement permises dans les appels de m\u00e9thode et les pi\u00e8ces jointes.<\/p>\n<p>Remarque :<strong> Ce changement n&rsquo;affectera que les appels de fonction. La syntaxe de la d\u00e9claration de fonction ne changera pas<\/strong>. De plus, les virgules isol\u00e9es, les guillemets multiples et les virgules d\u2019en- t\u00eate ne seront pas autoris\u00e9s.<\/p>\n<p>D&rsquo;autres exemples peuvent \u00eatre trouv\u00e9s sur la <a href=\"https:\/\/wiki.php.net\/rfc\/trailing-comma-function-calls\">page RFC<\/a>. Ce RFC a \u00e9t\u00e9 adopt\u00e9 par 30 voix contre 10.<\/p>\n<h4>PHP 7.3 RFC<\/h4>\n<ul>\n<li><a href=\"https:\/\/wiki.php.net\/rfc\/flexible_heredoc_nowdoc_syntaxes\">Syntaxes flexibles Heredoc et Nowdoc<\/a><\/li>\n<\/ul>\n<h2 id=\"JSON_THROW_ON_ERROR\">JSON_THROW_ON_ERROR<\/h2>\n<p>L&rsquo;une des fonctionnalit\u00e9s les plus appr\u00e9ci\u00e9es de PHP 7.3 offre une nouvelle fa\u00e7on de g\u00e9rer les erreurs JSON. Ce n&rsquo;est pas une fonctionnalit\u00e9 de base, mais un ajout \u00e0 l&rsquo;extension JSON qui changera le comportement d&rsquo;erreur de <a href=\"http:\/\/www.php.net\/json_decode\">json_decode()<\/a> et <a href=\"http:\/\/www.php.net\/json_encode\">json_encode()<\/a>.<\/p>\n<p>Actuellement, <code>json_decode()<\/code> retourne\u00a0<code>null<\/code> en cas d&rsquo;erreur, mais <code>null<\/code> peut aussi \u00eatre un r\u00e9sultat valide. Cela pourrait pr\u00eater \u00e0 confusion, car<\/p>\n<blockquote><p>Il n&rsquo;est possible de savoir si une erreur s&rsquo;est produite qu&rsquo;en appelant <code>json_last_error()<\/code> ou\u00a0<code>json_last_error_msg()<\/code>, qui retournent l&rsquo;\u00e9tat d&rsquo;erreur global sous forme lisible par machine et lisible par l&rsquo;homme respectivement. &#8211; <a href=\"https:\/\/wiki.php.net\/rfc\/json_throw_on_error\" target=\"_blank\" rel=\"noopener noreferrer\">PHP RFC<\/a><\/p><\/blockquote>\n<p><code>json_encode()<\/code> retourne\u00a0<code>FALSE<\/code>\u00a0en cas d&rsquo;erreur.<\/p>\n<p>C&rsquo;est plus clair parce qu&rsquo;il y a une valeur d&rsquo;erreur sp\u00e9cifique. Quoi qu&rsquo;il en soit,<strong> les deux fonctions n&rsquo;arr\u00eatent pas l&rsquo;ex\u00e9cution du programme en cas d&rsquo;erreur, ni ne lancent aucun avertissement<\/strong>.<\/p>\n<p>Ceci \u00e9tant dit, voici la proposition pour PHP 7.3 :<\/p>\n<blockquote><p>Ce RFC propose plut\u00f4t d&rsquo;ajouter une nouvelle valeur d&rsquo;option pour\u00a0<code>json_decode()<\/code>\u00a0et\u00a0<code>json_encode()<\/code>, <code>JSON_THROW_ON_ERROR<\/code>. Lorsque cet avertissement est pass\u00e9, le comportement d&rsquo;erreur de ces fonctions est modifi\u00e9. L&rsquo;\u00e9tat d&rsquo;erreur global n&rsquo;est pas touch\u00e9, et si une erreur se produit, ces fonctions lancent \u00e0 la place une\u00a0<code>JsonException<\/code> avec le message et le code mis \u00e0 tout ce que\u00a0<code>json_last_error()<\/code>\u00a0et\u00a0<code>json_last_error_msg()<\/code> seraient autrement respectivement.<\/p><\/blockquote>\n<p>Voici un exemple montrant une fa\u00e7on simple de lancer une erreur JSON :<\/p>\n<pre><code class=\"language-php\">try {\n    json_decode(\"{\", false, 512, JSON_THROW_ON_ERROR);\n}\ncatch (\\JsonException $exception) {\n    echo $exception-&gt;getMessage(); \/\/ echoes \"Syntax error\"\n}<\/code><\/pre>\n<p>Lancer une exception en cas d&rsquo;erreur donneront plusieurs avantages que vous trouverez list\u00e9s sur le <a href=\"https:\/\/wiki.php.net\/rfc\/json_throw_on_error\">RFC<\/a>.<\/p>\n<p>Note : un param\u00e8tre de profondeur invalide pass\u00e9 \u00e0\u00a0<code>json_decode()<\/code> \u00e9met un avertissement et retourne\u00a0<code>NULL<\/code>. Ce comportement ne sera pas affect\u00e9 par\u00a0<code>JSON_THROW_ON_ERROR<\/code>. De m\u00eame, les erreurs d&rsquo;analyse des param\u00e8tres ne sont pas affect\u00e9es par\u00a0<code>JSON_THROW_ON_ERROR<\/code> et continuent \u00e0 produire des avertissements.<\/p>\n<p>Cette proposition a \u00e9t\u00e9 adopt\u00e9e par 23 voix contre 0.<\/p>\n<h4>PHP 7.3 RFC<\/h4>\n<ul>\n<li><a href=\"https:\/\/wiki.php.net\/rfc\/json_throw_on_error\" target=\"_blank\" rel=\"noopener noreferrer\">JSON_THROW_ON_ERROR<\/a><\/li>\n<\/ul>\n<p><strong>Ressources suppl\u00e9mentaires<\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/php.net\/manual\/en\/book.json.php\">Notation d&rsquo;objet JavaScript<\/a><\/li>\n<li><a href=\"http:\/\/php.net\/manual\/en\/function.json-decode.php\">json_decode()<\/a><\/li>\n<li><a href=\"http:\/\/php.net\/manual\/en\/function.json_encode\">json_encode()<\/a><\/li>\n<li><a href=\"http:\/\/php.net\/manual\/en\/function.json-last-error.php\">json_last_error()<\/a><\/li>\n<li><a href=\"http:\/\/php.net\/manual\/en\/function.json-last-error-msg.php\">json_last_error_msg()<\/a><\/li>\n<li><a href=\"http:\/\/php.net\/manual\/en\/language.exceptions.php\">Exceptions du langage PHP<\/a><\/li>\n<\/ul>\n<h2 id=\"list\">list() <strong>Affectation de r\u00e9f\u00e9rence<\/strong><\/h2>\n<p><strong>Que signifie l&rsquo;affectation de r\u00e9f\u00e9rence ?<\/strong><\/p>\n<p>Consid\u00e9rez la ligne suivante :<\/p>\n<pre><code class=\"language-php\">$b = &$a;<\/code><\/pre>\n<p>Ici\u00a0<code>$b<\/code> prend la valeur <code>$a<\/code>, mais cette valeur n&rsquo;est pas copi\u00e9e de\u00a0<code>$a<\/code>\u00a0\u00e0\u00a0<code>$b<\/code>. En PHP, nous pouvons assigner une valeur par r\u00e9f\u00e9rence, ce qui signifie que deux variables peuvent pointer vers les m\u00eames donn\u00e9es, et chaque changement de variable affecte les donn\u00e9es d&rsquo;origine. Voici <a href=\"http:\/\/php.net\/manual\/en\/language.operators.assignment.php#language.operators.assignment.reference\">un exemple tir\u00e9 du manuel PHP :<\/a><\/p>\n<pre><code class=\"language-php\">&lt;?php\n$a = 3;\n$b = &$a; \/\/ $b est une r\u00e9f\u00e9rence pour $a\n\nprint \"$a\\n\"; \/\/ affiche 3\nprint \"$b\\n\"; \/\/ affiche 3<\/code><\/pre>\n<p>Maintenant, changeons la valeur\u00a0 de\u00a0<code>$a<\/code>:<\/p>\n<pre><code class=\"language-php\">$a = 4; \/\/ change $a\n\nprint \"$a\\n\"; \/\/ affiche 4\nprint \"$b\\n\"; \/\/ affiche 4 aussi, puisque $b est une r\u00e9f\u00e9rence pour $a, qui\u00a0a\u00a0\u00e9t\u00e9\u00a0chang\u00e9<\/code><\/pre>\n<h3><strong>Qu&rsquo;est-ce que la construction de list() et comment change-t-elle avec PHP 7.3<\/strong><\/h3>\n<p>Le langage de construction de <a href=\"http:\/\/www.php.net\/list\">list()<\/a> peut \u00eatre utilis\u00e9 pour \u00ab\u00a0assigner des variables comme si elles \u00e9taient dans un tableau\u00a0\u00bb, mais avec\u00a0<code>list()<\/code><\/p>\n<p>nous ne sommes pas actuellement autoris\u00e9s \u00e0 assigner des valeurs de variables par r\u00e9f\u00e9rence.<\/p>\n<p>PHP 7.3 devrait changer cela en nous permettant d&rsquo;assigner des variables par r\u00e9f\u00e9rence aussi avec la construction de\u00a0<code>list()<\/code>\u00a0comme montr\u00e9 dans l&rsquo;exemple suivant :<\/p>\n<pre><code class=\"language-php\">$array = [1, 2];\nlist($a, &$b) = $array;<\/code><\/pre>\n<p>Ce qui est la m\u00eame chose que :<\/p>\n<pre><code class=\"language-php\">$array = [1, 2];\n$a = $array[0];\n$b =& $array[1];<\/code><\/pre>\n<p>L&rsquo;avantage de cette proposition est que nous pouvons maintenant assigner plusieurs variables par r\u00e9f\u00e9rence, ce qui n&rsquo;\u00e9tait pas permis actuellement. D&rsquo;autres exemples sont disponibles sur le <a href=\"https:\/\/wiki.php.net\/rfc\/list_reference_assignment\">RFC<\/a>. Cette proposition a \u00e9t\u00e9 adopt\u00e9e par 17 voix contre 7.<\/p>\n<h4>PHP 7.3 RFC<\/h4>\n<ul>\n<li><a href=\"https:\/\/wiki.php.net\/rfc\/list_reference_assignment\" target=\"_blank\" rel=\"noopener noreferrer\">list() Affectation de r\u00e9f\u00e9rence<\/a><\/li>\n<\/ul>\n<h4><strong>Ressources suppl\u00e9mentaires<\/strong><\/h4>\n<ul>\n<li>Manuel PHP &#8211; <a href=\"http:\/\/php.net\/manual\/en\/function.list.php\">list()<\/a><\/li>\n<li>Manuel PHP &#8211; <a href=\"http:\/\/php.net\/manual\/en\/language.references.php\">R\u00e9f\u00e9rences expliqu\u00e9es<\/a><\/li>\n<li>Op\u00e9rateurs d&rsquo;assignation &#8211; <a href=\"http:\/\/php.net\/manual\/en\/language.operators.assignment.php#language.operators.assignment.reference\">Assignation par r\u00e9f\u00e9rence<\/a><\/li>\n<\/ul>\n<h2 id=\"is-countable\">Fonction is_countable<\/h2>\n<p>Une autre fonctionnalit\u00e9 utile fournie avec PHP 7.3 est la fonction\u00a0<code>is_countable()<\/code>. Jusqu&rsquo;\u00e0 <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-7-2\/\">PHP 7.2,<\/a> nous obtenons une erreur lorsque nous essayons de <a href=\"http:\/\/php.net\/manual\/en\/function.count.php\">count()<\/a> quelque chose qui n&rsquo;est pas comptable. Pour cette raison, afin d&rsquo;\u00e9viter un avertissement, nous sommes oblig\u00e9s d&rsquo;ajouter le code suivant :<\/p>\n<pre><code class=\"language-php\">if (is_array($foo) || $foo instanceof Countable) {\n    \/\/ $foo is countable\n}<\/code><\/pre>\n<p>Ce RFC propose la fonction <a href=\"https:\/\/wiki.php.net\/rfc\/is-countable\">is_countable()<\/a>, qui retourne true si la variable donn\u00e9e est un tableau ou une variable comptable, false sinon. Ainsi, le code ci-dessus pourrait \u00eatre modifi\u00e9 comme suit :<\/p>\n<pre><code class=\"language-php\">if (is_countable($foo)) {\n    \/\/ $foo is countable\n}<\/code><\/pre>\n<p>Cette proposition a \u00e9t\u00e9 adopt\u00e9e par 25 voix contre 0.<\/p>\n<h4>PHP 7.3 RFC<\/h4>\n<ul>\n<li><a href=\"https:\/\/wiki.php.net\/rfc\/is-countable\" target=\"_blank\" rel=\"noopener noreferrer\">is_countable<\/a><\/li>\n<\/ul>\n<h4><strong>Ressources suppl\u00e9mentaires<\/strong><\/h4>\n<ul>\n<li><a href=\"http:\/\/php.net\/manual\/en\/class.countable.php\" target=\"_blank\" rel=\"noopener noreferrer\">The Countable interface<\/a><\/li>\n<li><a href=\"http:\/\/php.net\/manual\/en\/function.count.php\" target=\"_blank\" rel=\"noopener noreferrer\">count<\/a><\/li>\n<\/ul>\n<h2 id=\"array-key-first-last\">array_key_first(), array_key_last()<\/h2>\n<p>Actuellement, nous pouvons r\u00e9cup\u00e9rer la premi\u00e8re et la derni\u00e8re cl\u00e9 d&rsquo;un tableau en utilisant les fonctions <a href=\"http:\/\/php.net\/manual\/en\/function.reset.php\">reset(),<\/a> <a href=\"http:\/\/php.net\/manual\/en\/function.end.php\">end()et<\/a> <a href=\"http:\/\/php.net\/manual\/en\/function.key.php\">key()<\/a>. Malheureusement, avec ces fonctions, il n&rsquo;est pas possible de rassembler le premier ou le dernier index d&rsquo;un tableau sans changer son \u00e9tat interne. D&rsquo;autres options r\u00e9duisent g\u00e9n\u00e9ralement la lisibilit\u00e9 et les performances du code, et cette proposition changerait ce sc\u00e9nario en ajoutant deux nouvelles fonctions au noyau de PHP :<\/p>\n<ul>\n<li><code>array_key_first()<\/code><\/li>\n<li><code>array_key_last()<\/code><\/li>\n<\/ul>\n<p>Depuis PHP 7.3, <code>array_key_first()<\/code>\u00a0et\u00a0<code>array_key_last()<\/code> permettent de r\u00e9cup\u00e9rer la premi\u00e8re et la derni\u00e8re cl\u00e9 d&rsquo;un tableau donn\u00e9<strong> sans affecter le pointeur interne du tableau.<\/strong> Ces nouvelles fonctions nous permettraient d&rsquo;\u00e9crire du code moins complexe et dans certains cas d&rsquo;\u00e9viter des erreurs. Voir le <a href=\"https:\/\/wiki.php.net\/rfc\/array_key_first_last\">RFC<\/a> pour plus d&rsquo;informations et plusieurs exemples.<\/p>\n<p><code>array_key_first()<\/code>\u00a0et\u00a0<code>array_key_last()<\/code> ont \u00e9t\u00e9 approuv\u00e9s avec 18 \u00e0 14 votes.<\/p>\n<p>Note : le RFC original proposait deux fonctions suppl\u00e9mentaires, <code>array_value_first()<\/code>\u00a0et\u00a0<code>array_value_last()<\/code>, qui ont \u00e9t\u00e9 vot\u00e9es dans un sondage diff\u00e9rent, mais n&rsquo;ont pas \u00e9t\u00e9 approuv\u00e9es et ne feront pas partie du noyau de PHP.<\/p>\n<h4>PHP 7.3 RFC<\/h4>\n<ul>\n<li><a href=\"https:\/\/wiki.php.net\/rfc\/array_key_first_last\" target=\"_blank\" rel=\"noopener noreferrer\">array_key_first(), array_key_last()<\/a><\/li>\n<\/ul>\n<h4><strong>Ressources suppl\u00e9mentaires<\/strong><\/h4>\n<ul>\n<li><a href=\"http:\/\/php.net\/manual\/en\/function.array-key-first.php\" target=\"_blank\" rel=\"noopener noreferrer\">array_key_first<\/a><\/li>\n<li><a href=\"http:\/\/php.net\/manual\/en\/function.array-key-last.php\" target=\"_blank\" rel=\"noopener noreferrer\">array_key_last<\/a><\/li>\n<\/ul>\n<h2 id=\"argon2\"><strong>Am\u00e9liorations apport\u00e9es \u00e0 Argon2 Password Hash<\/strong><\/h2>\n<p>Argon2 est un algorithme de hachage <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-7-2\/\">impl\u00e9ment\u00e9 en PHP 7.2<\/a> comme alternative \u00e0 l&rsquo;algorithme Bcrypt. PHP 7.2 a introduit la constante <code>PASSWORD_ARGON2I<\/code>,\u00a0disponible pour \u00eatre utilis\u00e9e dans les fonctions <code>password_*<\/code>\u00a0:<\/p>\n<pre><code class=\"language-php\">password_hash('password', PASSWORD_ARGON2I);<\/code><\/pre>\n<p>Depuis sa premi\u00e8re impl\u00e9mentation, une nouvelle variante d&rsquo;Argon2 a \u00e9t\u00e9 ajout\u00e9e, ainsi, au moment d&rsquo;\u00e9crire ces lignes, Argon2 existe en trois variantes :<\/p>\n<ul>\n<li><strong>Argon2d<\/strong> maximise la r\u00e9sistance aux attaques de cracking GPU. Il est plus rapide et utilise un acc\u00e8s m\u00e9moire en fonction des donn\u00e9es.<\/li>\n<li><strong>Argon2i<\/strong> utilise un acc\u00e8s m\u00e9moire ind\u00e9pendant des donn\u00e9es, ce qui est pr\u00e9f\u00e9rable pour le hachage des mots de passe. Il est plus lent car il fait plus de passes sur la m\u00e9moire pour se prot\u00e9ger des attaques tadeoff.<\/li>\n<li><strong>Argon2id<\/strong> est une version hybride qui combine l&rsquo;approche Argon2i pour la premi\u00e8re m\u00e9moire de passage et l&rsquo;approche Argon2d pour les passages suivants.<\/li>\n<\/ul>\n<p>Argon2id est recommand\u00e9 sur Internet, sauf lorsqu&rsquo;il y a de bonnes raisons de pr\u00e9f\u00e9rer sp\u00e9cifiquement une autre variante.<\/p>\n<p>Le nouveau RFC propose l&rsquo;impl\u00e9mentation d&rsquo;Argon2id dans les <a href=\"http:\/\/php.net\/manual\/en\/ref.password.php\">fonctions password_*<\/a> avec la nouvelle constante\u00a0<code>PASSWORD_ARGON2ID<\/code> :<\/p>\n<pre><code class=\"language-php\">password_hash('password', PASSWORD_ARGON2ID);<\/code><\/pre>\n<p>L&rsquo;impl\u00e9mentation est identique \u00e0 l&rsquo;impl\u00e9mentation Argon2i, et acceptera les m\u00eames facteurs de co\u00fbt :<\/p>\n<ul>\n<li>Un<strong> co\u00fbt de m\u00e9moire<\/strong> qui d\u00e9finit le nombre de KiB \u00e0 consommer pendant le hachage (les valeurs par d\u00e9faut sont 1&lt;10, ou 1024 KiB, ou 1 MiB).<\/li>\n<li>Un<strong> co\u00fbt en temps<\/strong> qui d\u00e9finit le nombre d&rsquo;it\u00e9rations de l&rsquo;algorithme de hachage (par d\u00e9faut : 2)<\/li>\n<li>Un<strong> facteur de parall\u00e9lisme<\/strong>, qui d\u00e9finit le nombre de threads parall\u00e8les qui seront utilis\u00e9s pendant le hachage (valeur par d\u00e9faut : 2).<\/li>\n<\/ul>\n<p><span style=\"color: inherit;font-size: inherit\">Voir le code suivant :<\/span><\/p>\n<pre><code class=\"language-php\">$options = ['memory_cost' =&gt; 1&lt;&lt;11, 'time_cost' =&gt; 4, 'threads' =&gt; 2];\npassword_hash('password', PASSWORD_ARGON2ID, $options);<\/code><\/pre>\n<p>Plus d&rsquo;informations et d&rsquo;exemples sur le <a href=\"https:\/\/wiki.php.net\/rfc\/argon2_password_hash_enhancements\">RFC.<\/a><\/p>\n<h4>PHP 7.3 RFC<\/h4>\n<ul>\n<li><a href=\"https:\/\/wiki.php.net\/rfc\/argon2_password_hash_enhancements\" target=\"_blank\" rel=\"noopener noreferrer\">Argon2 Password Hash Enhancements<\/a><\/li>\n<\/ul>\n<h4><strong>Ressources suppl\u00e9mentaires<\/strong><\/h4>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Argon2\" target=\"_blank\" rel=\"noopener noreferrer\">Argon2<\/a> (Wikipedia)<\/li>\n<li><a href=\"https:\/\/www.cryptolux.org\/images\/0\/0d\/Argon2.pdf\">Argon2 : la fonction m\u00e9moire pour le hachage de mots de passe et autres applications <\/a>(PDF)<\/li>\n<\/ul>\n<h2 id=\"deprecations\"><strong>D\u00e9pr\u00e9ciations<\/strong><\/h2>\n<p>Les fonctions\/fonctionnalit\u00e9s suivantes seront obsol\u00e8tes avec PHP 7.3 et supprim\u00e9es au plus tard avec PHP 8.0.<\/p>\n<h3><strong>D\u00e9pr\u00e9ciation et suppression de image2wbmp()<\/strong><\/h3>\n<p>La fonction<strong> image2wbmp()<\/strong> \u00e9dite ou enregistre une version <a href=\"https:\/\/en.wikipedia.org\/wiki\/Wireless_Application_Protocol_Bitmap_Format\">WBMP<\/a> d\u2019une image donn\u00e9e. Cette fonction prend trois arguments : une ressource image, un nom de fichier (le chemin vers le fichier sauvegard\u00e9), et une couleur d&rsquo;avant-plan.<\/p>\n<p>\u00c0 partir de PHP 5.0, elle est identique \u00e0 <a href=\"http:\/\/php.net\/manual\/en\/function.imagewbmp.php\">imagewbmp(),<\/a> donc ce <a href=\"https:\/\/wiki.php.net\/rfc\/image2wbmp\">RFC<\/a> propose de la d\u00e9pr\u00e9cier et de la supprimer, ainsi dans PHP 7.3 chaque appel \u00e0\u00a0<code>image2wbmp()<\/code> \u00e9met un avertissement de d\u00e9pr\u00e9ciation. Apr\u00e8s le retrait, chaque appel lancera une erreur fatale.<\/p>\n<h4>PHP 7.3 RFC<\/h4>\n<ul>\n<li><a href=\"https:\/\/wiki.php.net\/rfc\/image2wbmp\" target=\"_blank\" rel=\"noopener noreferrer\">Deprecate and Remove image2wbmp()<\/a><\/li>\n<\/ul>\n<h3><strong>D\u00e9pr\u00e9ciation et suppression des constantes insensibles \u00e0 la casse<\/strong><\/h3>\n<p>PHP supporte actuellement les constantes sensibles \u00e0 la casse et insensibles \u00e0 la casse. Quoi qu&rsquo;il en soit, les constantes<strong> insensibles \u00e0 la casse<\/strong> sont prises en charge mais sont consid\u00e9r\u00e9es comme sujettes \u00e0 des incoh\u00e9rences dans les fonctionnalit\u00e9s et comme \u00e9tant complexes \u00e0 utiliser :<\/p>\n<ul>\n<li><a href=\"http:\/\/php.net\/manual\/en\/language.oop5.constants.php\">les constantes de classe<\/a> sont toujours sensibles \u00e0 la casse<\/li>\n<li>les constantes globales d\u00e9clar\u00e9es avec\u00a0<code>const<\/code> sont toujours sensibles \u00e0 la casse<\/li>\n<li>les constantes d\u00e9finies avec\u00a0<code>define()<\/code> sont sensibles \u00e0 la casse par d\u00e9faut<\/li>\n<\/ul>\n<p>De plus, la <a href=\"http:\/\/php.net\/manual\/en\/language.constants.php\">r\u00e9f\u00e9rence du langage PHP<\/a> stipule explicitement :<\/p>\n<blockquote><p>Une constante est sensible \u00e0 la casse par d\u00e9faut. Par convention, les identificateurs constants sont toujours en majuscules.<\/p><\/blockquote>\n<p>Cela \u00e9tant dit, ce RFC propose les changements suivants :<\/p>\n<ul>\n<li>D\u00e9pr\u00e9cier l&rsquo;appel\u00a0<code>define()<\/code>\u00a0avec le troisi\u00e8me param\u00e8tre mis \u00e0 <code>true<\/code> &#8211; PHP 7.3<\/li>\n<li>D\u00e9pr\u00e9cier l&rsquo;acc\u00e8s aux constantes insensibles \u00e0 la casse avec une enveloppe diff\u00e9rente de la d\u00e9claration (\u00e0 l&rsquo;exception de\u00a0<code>true<\/code>, <code>false<\/code>\u00a0et\u00a0<code>null<\/code>) &#8211; PHP 7.3<\/li>\n<li>Supprimer la possibilit\u00e9 de d\u00e9clarer des constantes insensibles \u00e0 la casse &#8211; PHP 8.0<\/li>\n<li>Convertir les constantes\u00a0<code>true<\/code>, <code>false<\/code>\u00a0et\u00a0<code>null<\/code> de constantes sp\u00e9ciales en mots-cl\u00e9s r\u00e9serv\u00e9s &#8211; PHP 8.0<\/li>\n<\/ul>\n<h4>PHP 7.3 RFC<\/h4>\n<p><a href=\"https:\/\/wiki.php.net\/rfc\/case_insensitive_constant_deprecation\">D\u00e9pr\u00e9ciation et suppression des constantes insensibles \u00e0 la casse.<\/a><\/p>\n<h3><strong>D\u00e9pr\u00e9ciations suppl\u00e9mentaires pour PHP 7.3<\/strong><\/h3>\n<p>Voici une liste rapide des fonctionnalit\u00e9s obsol\u00e8tes de PHP 7.3. Ce n&rsquo;est pas exhaustif, ce ne sont que les propositions de d\u00e9pr\u00e9ciation que je consid\u00e8re personnellement les plus pertinentes. Pour une liste compl\u00e8te des suppressions propos\u00e9es, voir <a href=\"https:\/\/wiki.php.net\/rfc\/deprecations_php_7_3\">Suppressions pour PHP 7.3<\/a>.<\/p>\n<p><strong>Alias de fonction mbstring non document\u00e9s<\/strong> : il y a un certain nombre d&rsquo;alias de fonction <a href=\"http:\/\/php.net\/manual\/en\/book.mbstring.php\">mbstring<\/a> non document\u00e9s qui sont des duplications de fonctions \u00e9quivalentes utilisant le pr\u00e9fixe\u00a0<code>mb_<\/code>. Par exemple, <code>mbereg<\/code> est un alias de\u00a0<code>mb_ereg<\/code>.<\/p>\n<p>Toutes ces fonctions seront marqu\u00e9es comme obsol\u00e8tes et un avis d&rsquo;obsolescence sera lanc\u00e9 lorsqu&rsquo;elles sont rencontr\u00e9es pendant la compilation.<\/p>\n<p><strong>Fonctions de recherche de cha\u00eene avec un entier<\/strong> : ces fonctions fonctionnent g\u00e9n\u00e9ralement sur des aiguilles de cha\u00eenes. Si une aiguille sans cha\u00eene est donn\u00e9e, elle est convertie en entier et appliqu\u00e9e comme valeur ordinale d&rsquo;un caract\u00e8re (pour en savoir plus, consultez le <a href=\"http:\/\/php.net\/manual\/en\/function.strpos.php\">manuel PHP<\/a>). Voici <a href=\"https:\/\/wiki.php.net\/rfc\/deprecations_php_7_3#string_search_functions_with_integer_needle\">un exemple tir\u00e9 du RFC :<\/a><\/p>\n<pre><code class=\"language-php\">$str = \"There are 10 apples\";\nvar_dump(strpos($str, \"10\")); \/\/ int(10)\nvar_dump(strpos($str, 10));   \/\/ bool(false)<\/code><\/pre>\n<p>Ceci est consid\u00e9r\u00e9 comme d\u00e9routant et cause des probl\u00e8mes impr\u00e9visibles parce que le type peut changer avec la source de donn\u00e9es de l&rsquo;utilisateur. Pour cette raison, le RFC propose l&rsquo;\u00e9mission d&rsquo;un avertissement de d\u00e9pr\u00e9ciation si une aiguille sans cha\u00eene est pass\u00e9e \u00e0 l&rsquo;une des fonctions suivantes :<\/p>\n<ul>\n<li><code>strpos<\/code><\/li>\n<li><code>strrpos<\/code><\/li>\n<li><code>stripos<\/code><\/li>\n<li><code>strripos<\/code><\/li>\n<li><code>strstr<\/code><\/li>\n<li><code>strchr<\/code><\/li>\n<li><code>strrchr<\/code><\/li>\n<li><code>stristr<\/code><\/li>\n<\/ul>\n<p>Dans PHP 8.0, l&rsquo;avertissement de d\u00e9pr\u00e9ciation devrait \u00eatre supprim\u00e9 et les aiguilles devraient \u00eatre automatiquement converties en cha\u00eenes. <\/p>\n<p><strong>La fonction <code>fgetss()<\/code>\u00a0et le filtre de flux <code>string.strip_tags<\/code>\u00a0<\/strong>: <code>fgetss()<\/code>\u00a0et\u00a0<code>string.strip_tags<\/code> suppriment les tags d&rsquo;un flux lorsqu&rsquo;ils les lisent. La fonction et le filtre exposent la fonctionnalit\u00e9 <a href=\"http:\/\/php.net\/manual\/en\/function.strip-tags.php\">strip_tags()<\/a>, rendant l&rsquo;impl\u00e9mentation de\u00a0<code>strip_tags()<\/code> plus complexe, car une machine d&rsquo;\u00e9tat de stream est n\u00e9cessaire. En outre, le RFC souligne <a href=\"https:\/\/wiki.php.net\/rfc\/deprecations_php_7_3#fgetss_function_and_stringstrip_tags_filter\">un autre inconv\u00e9nient<\/a> de ces fonctions :<\/p>\n<blockquote><p>D&rsquo;autre part, ces fonctions semblent \u00eatre tr\u00e8s peu utiles. <code>strip_tags()<\/code> lui-m\u00eame, en raison de ses limitations et des bugs connus, a d\u00e9j\u00e0 tr\u00e8s peu d&rsquo;applications l\u00e9gitimes. Il n&rsquo;est pas n\u00e9cessaire de fournir un support natif pour les applications de stream en plus de cela.<\/p><\/blockquote>\n<p>Le RFC propose donc de marquer\u00a0<code>fgetss()<\/code>, <code>gzgetss()<\/code>\u00a0et\u00a0<code>SplFileObject::fgetss()<\/code>\u00a0comme obsol\u00e8tes.<\/p>\n<h2><strong>Que signifie PHP 7.3 pour les utilisateurs de WordPress <\/strong>?<\/h2>\n<p>Selon la <a href=\"https:\/\/wordpress.org\/about\/stats\/\">page<\/a><a href=\"https:\/\/wordpress.org\/about\/stats\/\"> officielle de WordPress Stats,<\/a> au moment d&rsquo;\u00e9crire ces lignes, seulement 32,9% des utilisateurs de WordPress ont migr\u00e9 vers PHP 7 ou plus. Seulement 4% utilisent <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-7-2\/\">PHP 7.2<\/a>. Vous pouvez voir qu&rsquo;une grande majorit\u00e9 d&rsquo;utilisateurs, plus de 38%, fonctionnent toujours en PHP 5.6. Ce qui est encore plus effrayant, c&rsquo;est que plus de 28,5% des utilisateurs utilisent des versions PHP non support\u00e9es. En d\u00e9cembre 2016, WordPress.org a fait passer sa <a href=\"https:\/\/wordpress.org\/about\/requirements\/\">recommandation officielle<\/a> pour les utilisateurs de PHP 5.6 \u00e0 PHP 7 ou plus.<\/p>\n<figure style=\"width: 1404px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/08\/versions-php-wordpress.png\" alt=\"Version de PHP WordPress\" width=\"1404\" height=\"1054\"><figcaption class=\"wp-caption-text\">Version de PHP WordPress<\/figcaption><\/figure>\n<p>Les chiffres ci-dessus sont particuli\u00e8rement d\u00e9courageants du point de vue des performances, car PHP 7 s&rsquo;est av\u00e9r\u00e9 beaucoup plus rapide. Voici quelques statistiques :<\/p>\n<ul>\n<li><a href=\"http:\/\/talks.php.net\/fluent15#\/wpbench\">Les benchmarks<\/a> officiels de PHP montrent que PHP 7 permet au syst\u00e8me d&rsquo;ex\u00e9cuter deux fois plus de requ\u00eates par seconde que PHP 5.6, avec presque la moiti\u00e9 de la latence.<\/li>\n<li>Christian Vigh a \u00e9galement publi\u00e9 une <a href=\"https:\/\/www.phpclasses.org\/blog\/post\/493-php-performance-evolution.html\">comparaison des performances de PHP<\/a> dans laquelle il a trouv\u00e9 que PHP 5.2 \u00e9tait 400% plus lent que PHP 7.<\/li>\n<\/ul>\n<p>Nous avons r\u00e9alis\u00e9 nos propres <a href=\"https:\/\/kinsta.com\/fr\/blog\/comparaison-php\/\">benchmarks de performances<\/a>. Et comme pour les benchmarks ci-dessus, nous avons vu que WordPress 5.0 avec PHP 7.3 pouvait ex\u00e9cuter presque trois fois plus de transactions (requ\u00eates) par seconde que PHP 5.6.<\/p>\n<figure id=\"attachment_37393\" aria-describedby=\"caption-attachment-37393\" style=\"width: 940px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-37393\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2018\/12\/wordpress-5.0-php-benchmarks-v2.png\" alt=\"Tests PHP WordPress 5.0\" width=\"940\" height=\"788\"><figcaption id=\"caption-attachment-37393\" class=\"wp-caption-text\">Tests PHP WordPress 5.0<\/figcaption><\/figure>\n<ul>\n<li>Test WordPress 5.0 + PHP 5.6 : 91.64 req\/sec<\/li>\n<li>Test WordPress 5.0 + PHP 7.0 : 206.71 req\/sec<\/li>\n<li>Test WordPress 5.0 + PHP 7.1 : 210.98 req\/sec<\/li>\n<li>Test WordPress 5.0 + PHP 7.2 : 229.18 req\/sec<\/li>\n<li>Test WordPress 5.0 + <strong>PHP 7.3 : 253.20 req\/sec<\/strong> <strong>\ud83c\udfc6<\/strong><\/li>\n<\/ul>\n<p>Il est \u00e9galement int\u00e9ressant de noter que WordPress 4.9.8 sur PHP 7.3 \u00e9tait l\u00e9g\u00e8rement plus rapide que WordPress 5.0.<\/p>\n<figure id=\"attachment_37398\" aria-describedby=\"caption-attachment-37398\" style=\"width: 940px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-37398\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2018\/12\/wordpress-4.9.8-php-benchmarks.png\" alt=\"Tests PHP WordPress 4.9.8 PHP\" width=\"940\" height=\"788\"><figcaption id=\"caption-attachment-37398\" class=\"wp-caption-text\">Tests PHP WordPress 4.9.8 PHP<\/figcaption><\/figure>\n<ul>\n<li>Test WordPress 4.9.8 + PHP 5.6 : 97.59 req\/sec<\/li>\n<li>Test WordPress 4.9.8 + PHP 7.0 : 221.42 req\/sec<\/li>\n<li>Test WordPress 4.9.8 + PHP 7.1 : 233.78 req\/sec<\/li>\n<li>Test WordPress 4.9.8 + PHP 7.2 : 250.36 req\/sec<\/li>\n<li>Test WordPress 4.9.8 <strong>PHP 7.3 : 276.31 req\/sec \ud83c\udfc6<\/strong><\/li>\n<\/ul>\n<p>Beaucoup sont lents \u00e0 mettre \u00e0 jour simplement \u00e0 cause du temps n\u00e9cessaire pour tester tous leurs plugins et th\u00e8mes tiers afin de s&rsquo;assurer qu&rsquo;ils fonctionnent correctement. Mais il arrive souvent qu&rsquo;ils ne l&rsquo;aient tout simplement pas encore fait.<\/p>\n<h3>V\u00e9rifier votre version de PHP<\/h3>\n<p>Vous n&rsquo;\u00eates pas s\u00fbr de la version de PHP que vous utilisez ? Une des fa\u00e7ons les plus simples de v\u00e9rifier est d&rsquo;utiliser un outil comme <a href=\"https:\/\/kinsta.com\/fr\/blog\/test-vitesse-pingdom\/\">Pingdom<\/a> ou Google Chrome Devtools. Le premier en-t\u00eate de requ\u00eate HTTP vous montrera g\u00e9n\u00e9ralement la version.<\/p>\n<figure style=\"width: 1679px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2017\/10\/verifier-version-de-php.png\" alt=\"V\u00e9rifier la version de PHP\" width=\"1679\" height=\"644\"><figcaption class=\"wp-caption-text\">V\u00e9rifier la version de PHP<\/figcaption><\/figure>\n<p>Ceci d\u00e9pend du fait que l&rsquo;h\u00e9bergeur ne modifie pas la valeur de l&rsquo;en-t\u00eate\u00a0<code>X-Powered-By<\/code>. Si c&rsquo;est le cas, vous ne verrez peut-\u00eatre pas votre version PHP. Dans ce cas vous pourrez installer le plugin gratuit <a href=\"https:\/\/wordpress.org\/plugins\/version-info\/\" target=\"_blank\" rel=\"noopener noreferrer\">Version Info<\/a> qui vous montrera quelques informations de base sur le serveur dans le pied de page de votre tableau de bord d&rsquo;administration WordPress.<\/p>\n<figure id=\"attachment_37448\" aria-describedby=\"caption-attachment-37448\" style=\"width: 1942px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-37448\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2018\/08\/check-php-version-in-wordpress.png\" alt=\"V\u00e9rifier la version de PHP dans WordPress\" width=\"1942\" height=\"1038\"><figcaption id=\"caption-attachment-37448\" class=\"wp-caption-text\">V\u00e9rifier la version de PHP dans WordPress<\/figcaption><\/figure>\n<p>Alternativement, vous pouvez <a href=\"https:\/\/kinsta.com\/fr\/blog\/versions-php\/\">t\u00e9l\u00e9charger un fichier par FTP<\/a> pour voir votre version de PHP. Ou vous pouvez toujours vous adresser \u00e0 votre h\u00e9bergeur et lui demander.<\/p>\n<h3>Mise \u00e0 jour vers PHP 7.3<\/h3>\n<p>La version finale de PHP 7.3 est l\u00e0 et vous pouvez commencer \u00e0 la tester imm\u00e9diatement. Vous pouvez <a href=\"https:\/\/kinsta.com\/fr\/blog\/installer-wordpress-localement\/\">tester votre site WordPress localement<\/a> ou v\u00e9rifier vos scripts dans un environnement comme <a href=\"https:\/\/docs.docker.com\/get-started\/\">Docker,<\/a> qui vous permet de tester diff\u00e9rentes versions de PHP depuis la ligne de commande.<\/p>\n<p>Vous pouvez \u00e9galement utiliser un environnement de d\u00e9veloppement, car il ressemblera davantage \u00e0 un site de production en direct.<strong> Kinsta publiera PHP 7.3 d\u00e8s qu&rsquo;il sera disponible et aura \u00e9t\u00e9 enti\u00e8rement test\u00e9 par notre \u00e9quipe d&rsquo;administrateurs syst\u00e8me<\/strong>. Vous pouvez ensuite facilement cr\u00e9er un <a href=\"https:\/\/kinsta.com\/fr\/docs\/hebergement-wordpress\/environnement-staging\/\">environnement de d\u00e9veloppement<\/a> en un seul clic<\/p>\n<figure id=\"attachment_56367\" aria-describedby=\"caption-attachment-56367\" style=\"width: 2780px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-56367 size-full\" src=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/mykinsta-wp-staging-environment-1-e1651103667169.jpg\" alt=\"Environnement de staging WordPress\" width=\"2780\" height=\"1202\" srcset=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/mykinsta-wp-staging-environment-1-e1651103667169.jpg 2780w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/mykinsta-wp-staging-environment-1-e1651103667169-300x130.jpg 300w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/mykinsta-wp-staging-environment-1-e1651103667169-1024x443.jpg 1024w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/mykinsta-wp-staging-environment-1-e1651103667169-768x332.jpg 768w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/mykinsta-wp-staging-environment-1-e1651103667169-1536x664.jpg 1536w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/mykinsta-wp-staging-environment-1-e1651103667169-2048x886.jpg 2048w\" sizes=\"auto, (max-width: 2780px) 100vw, 2780px\" \/><figcaption id=\"caption-attachment-56367\" class=\"wp-caption-text\">Environnement de staging WordPress<\/figcaption><\/figure>\n<p>Nous vous recommandons toujours de proc\u00e9der \u00e0 des tests approfondis avant de l&rsquo;utiliser sur un site de production. Pour ce faire, il vous suffit de changer le moteur PHP du site de d\u00e9veloppement sous \u00ab\u00a0Outils\u00a0\u00bb et vous pouvez commencer \u00e0 tester pour vous assurer de la compatibilit\u00e9 de vos plugins et th\u00e8mes tiers.<\/p>\n<figure id=\"attachment_56368\" aria-describedby=\"caption-attachment-56368\" style=\"width: 2712px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-56368 size-full\" src=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/mykinsta-change-to-php-7.3--e1651103840471.jpg\" alt=\"Changer pour PHP 7.3\" width=\"2712\" height=\"1545\" srcset=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/mykinsta-change-to-php-7.3--e1651103840471.jpg 2712w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/mykinsta-change-to-php-7.3--e1651103840471-300x171.jpg 300w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/mykinsta-change-to-php-7.3--e1651103840471-1024x583.jpg 1024w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/mykinsta-change-to-php-7.3--e1651103840471-768x438.jpg 768w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/mykinsta-change-to-php-7.3--e1651103840471-1536x875.jpg 1536w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/mykinsta-change-to-php-7.3--e1651103840471-2048x1167.jpg 2048w\" sizes=\"auto, (max-width: 2712px) 100vw, 2712px\" \/><figcaption id=\"caption-attachment-56368\" class=\"wp-caption-text\">Changer pour PHP 7.3<\/figcaption><\/figure>\n<p>Une fois que vous avez confirm\u00e9 que tout fonctionne, vous pouvez changer votre site de production en PHP 7.3 ou si vous avez effectu\u00e9 des changements, <a href=\"https:\/\/kinsta.com\/fr\/docs\/hebergement-wordpress\/environnement-staging\/\" target=\"_blank\" rel=\"noopener noreferrer\">faites passer votre site de d\u00e9veloppement en production<\/a>.<\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>La derni\u00e8re et meilleure version de PHP est ici. Elle nous apportera des cadeaux comme des heredocs et des nowdocs flexibles, des virgules dans les appels de fonctions, des affectations de r\u00e9f\u00e9rence de\u00a0<code>list()<\/code> et plus encore. Dans cet article, nous avons donn\u00e9 un aper\u00e7u de nos am\u00e9liorations et modifications pr\u00e9f\u00e9r\u00e9es, mais nous aimerions aussi savoir quelles sont vos am\u00e9liorations et comment vous en profiterez. Faites-le nous savoir dans les commentaires ci-dessous.<\/p>\n\n<p>Vous pouvez trouver la liste compl\u00e8te des propositions de PHP 7.3 sur la page <a href=\"https:\/\/wiki.php.net\/rfc#php_73\">Demandes de commentaires<\/a> et les <a href=\"https:\/\/github.com\/php\/php-src\/blob\/php-7.3.0beta1\/UPGRADING\">notes de mise \u00e0 jour PHP 7.3<\/a> sur GitHub.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A partir du 6 d\u00e9cembre 2018, la derni\u00e8re et plus grande version, PHP 7.3 est arriv\u00e9e ! Avec lui viennent de nouvelles fonctionnalit\u00e9s utiles, des fonctionnalit\u00e9s, &#8230;<\/p>\n","protected":false},"author":36,"featured_media":21595,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[31,47],"topic":[1000],"class_list":["post-21576","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-php","tag-webdev","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>Quoi de neuf dans PHP 7.3 (Maintenant disponible chez Kinsta)<\/title>\n<meta name=\"description\" content=\"PHP 7.3 frappe \u00e0 notre porte et avec lui viennent de nouvelles fonctionnalit\u00e9s, des suppressions et des corrections de bugs. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.3 !\" \/>\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-7-3\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Quoi de neuf dans PHP 7.3 (Maintenant disponible chez Kinsta)\" \/>\n<meta property=\"og:description\" content=\"PHP 7.3 frappe \u00e0 notre porte et avec lui viennent de nouvelles fonctionnalit\u00e9s, des suppressions et des corrections de bugs. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.3 !\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/\" \/>\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=\"2018-10-29T11:31:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-20T09:06:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/php-7.3.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=\"Carlo Daniele\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"PHP 7.3 frappe \u00e0 notre porte et avec lui viennent de nouvelles fonctionnalit\u00e9s, des suppressions et des corrections de bugs. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.3 !\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/php-7.3.png\" \/>\n<meta name=\"twitter:creator\" content=\"@carlodaniele\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Daniele\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 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-7-3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/\"},\"author\":{\"name\":\"Carlo Daniele\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\"},\"headline\":\"Quoi de neuf dans PHP 7.3 (Maintenant disponible chez Kinsta)\",\"datePublished\":\"2018-10-29T11:31:40+00:00\",\"dateModified\":\"2024-09-20T09:06:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/\"},\"wordCount\":4099,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/php-7.3.png\",\"keywords\":[\"php\",\"webdev\"],\"articleSection\":[\"D\u00e9veloppement WordPress\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/\",\"name\":\"Quoi de neuf dans PHP 7.3 (Maintenant disponible chez Kinsta)\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/php-7.3.png\",\"datePublished\":\"2018-10-29T11:31:40+00:00\",\"dateModified\":\"2024-09-20T09:06:22+00:00\",\"description\":\"PHP 7.3 frappe \u00e0 notre porte et avec lui viennent de nouvelles fonctionnalit\u00e9s, des suppressions et des corrections de bugs. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.3 !\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/php-7.3.png\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/php-7.3.png\",\"width\":1460,\"height\":730,\"caption\":\"php-7.3\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#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\":\"Quoi de neuf dans PHP 7.3 (Maintenant disponible chez Kinsta)\"}]},{\"@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\/962dde02ea6f5df089b5d8d0853bbc63\",\"name\":\"Carlo Daniele\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"caption\":\"Carlo Daniele\"},\"description\":\"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.\",\"sameAs\":[\"https:\/\/frammentidicodice.com\/\",\"https:\/\/x.com\/carlodaniele\"],\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/carlodaniele\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Quoi de neuf dans PHP 7.3 (Maintenant disponible chez Kinsta)","description":"PHP 7.3 frappe \u00e0 notre porte et avec lui viennent de nouvelles fonctionnalit\u00e9s, des suppressions et des corrections de bugs. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.3 !","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-7-3\/","og_locale":"fr_FR","og_type":"article","og_title":"Quoi de neuf dans PHP 7.3 (Maintenant disponible chez Kinsta)","og_description":"PHP 7.3 frappe \u00e0 notre porte et avec lui viennent de nouvelles fonctionnalit\u00e9s, des suppressions et des corrections de bugs. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.3 !","og_url":"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2018-10-29T11:31:40+00:00","article_modified_time":"2024-09-20T09:06:22+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/php-7.3.png","type":"image\/png"}],"author":"Carlo Daniele","twitter_card":"summary_large_image","twitter_description":"PHP 7.3 frappe \u00e0 notre porte et avec lui viennent de nouvelles fonctionnalit\u00e9s, des suppressions et des corrections de bugs. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.3 !","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/php-7.3.png","twitter_creator":"@carlodaniele","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Carlo Daniele","Dur\u00e9e de lecture estim\u00e9e":"20 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/"},"author":{"name":"Carlo Daniele","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63"},"headline":"Quoi de neuf dans PHP 7.3 (Maintenant disponible chez Kinsta)","datePublished":"2018-10-29T11:31:40+00:00","dateModified":"2024-09-20T09:06:22+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/"},"wordCount":4099,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/php-7.3.png","keywords":["php","webdev"],"articleSection":["D\u00e9veloppement WordPress"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/","url":"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/","name":"Quoi de neuf dans PHP 7.3 (Maintenant disponible chez Kinsta)","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/php-7.3.png","datePublished":"2018-10-29T11:31:40+00:00","dateModified":"2024-09-20T09:06:22+00:00","description":"PHP 7.3 frappe \u00e0 notre porte et avec lui viennent de nouvelles fonctionnalit\u00e9s, des suppressions et des corrections de bugs. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.3 !","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/php-7-3\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/php-7.3.png","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/10\/php-7.3.png","width":1460,"height":730,"caption":"php-7.3"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-3\/#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":"Quoi de neuf dans PHP 7.3 (Maintenant disponible chez Kinsta)"}]},{"@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\/962dde02ea6f5df089b5d8d0853bbc63","name":"Carlo Daniele","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","caption":"Carlo Daniele"},"description":"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.","sameAs":["https:\/\/frammentidicodice.com\/","https:\/\/x.com\/carlodaniele"],"url":"https:\/\/kinsta.com\/fr\/blog\/author\/carlodaniele\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/21576","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\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=21576"}],"version-history":[{"count":17,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/21576\/revisions"}],"predecessor-version":[{"id":64250,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/21576\/revisions\/64250"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/21576\/translations\/en"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/21576\/translations\/es"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/21576\/translations\/it"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/21576\/translations\/fr"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/21576\/translations\/se"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/21576\/translations\/pt"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/21576\/translations\/nl"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/21576\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/21576\/translations\/jp"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/21576\/translations\/dk"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/21576\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/21595"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=21576"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=21576"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=21576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}