{"id":28340,"date":"2019-07-03T04:25:44","date_gmt":"2019-07-03T11:25:44","guid":{"rendered":"https:\/\/kinsta.com\/?p=46699"},"modified":"2024-09-20T10:06:48","modified_gmt":"2024-09-20T09:06:48","slug":"php-7-4","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/","title":{"rendered":"Quoi de neuf dans PHP 7.4 (Fonctionnalit\u00e9s, D\u00e9pr\u00e9ciations, Vitesse)"},"content":{"rendered":"<p>PHP 7.4, la prochaine version mineure de PHP 7, est sortie depuis le 28 novembre 2019. Il est donc temps pour nous de nous plonger dans certains des ajouts les plus excitants et de nouvelles fonctionnalit\u00e9s qui ont rendu\u00a0PHP plus rapide et plus fiable.<\/p>\n<p><strong>Mise \u00e0 jour :<\/strong> <a href=\"https:\/\/kinsta.com\/fr\/changelog\/php-8-1\/\">PHP 8.1 (version officielle)<\/a> est maintenant disponible pour tous les clients de Kinsta. PHP 7.4 n&rsquo;est plus support\u00e9 chez Kinsta. Veuillez noter que nous prenons en charge les versions de PHP 7.4, 8.0, 8.1, 8.2, 8.3, 8.4 et 8.5.<\/p>\n<p>M\u00eame si PHP 7.4 am\u00e9liore consid\u00e9rablement les performances et la lisibilit\u00e9 du code, <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-8\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8<\/a> sera le v\u00e9ritable jalon pour les performances de PHP, puisque la proposition pour l&rsquo;<a href=\"https:\/\/wiki.php.net\/rfc\/jit\" target=\"_blank\" rel=\"noopener noreferrer\">inclusion du JIT<\/a> a d\u00e9j\u00e0 \u00e9t\u00e9 approuv\u00e9e.<\/p>\n<p>Quoi qu&rsquo;il en soit, aujourd&rsquo;hui, nous passons en revue quelques-unes des fonctionnalit\u00e9s les plus int\u00e9ressantes et des changements que nous attendons avec PHP 7.4. Juste pour information, voici les dates importantes de la version 7.4 :<\/p>\n<ul>\n<li>Le 6 juin 2019 : PHP 7.4 Alpha 1<\/li>\n<li>Le 18 juillet\u00a0 2019 : PHP 7.4 Beta 1 &#8211; Gel des fonctionnalit\u00e9s<\/li>\n<li>Le 28 novembre 2019 : PHP 7.4 Version GA<\/li>\n<\/ul>\n<p>Vous pouvez consulter la liste compl\u00e8te des fonctionnalit\u00e9s et des ajouts sur <a href=\"https:\/\/wiki.php.net\/rfc#php_74\" target=\"_blank\" rel=\"noopener noreferrer\">la page officielle du RFC<\/a>.<\/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>Quoi de neuf dans PHP avec PHP 7.4 ?<\/h2>\n<p>Dans cet article, nous couvrons plusieurs changements et fonctionnalit\u00e9s qui devraient \u00eatre ajout\u00e9s au langage avec la version finale de PHP 7.4 :<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"disc\" selector=\"h3\" count-number=\"9\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3 id=\"array-spread-operator\">Oubliez array_merge : PHP 7.4 Apporte l&rsquo;op\u00e9rateur Spread dans l&rsquo;expression de Array<\/h3>\n<p>Disponible depuis PHP 5.6, le <a href=\"https:\/\/wiki.php.net\/rfc\/argument_unpacking\" target=\"_blank\" rel=\"noopener noreferrer\">unpacking d&rsquo;arguments<\/a> est une syntaxe pour le d\u00e9ballage des arrays et des <a href=\"https:\/\/www.php.net\/manual\/en\/class.traversable.php\" target=\"_blank\" rel=\"noopener noreferrer\">Traversables<\/a> en listes d&rsquo;arguments. Pour d\u00e9compresser un array ou un Traversable, il doit \u00eatre pr\u00e9c\u00e9d\u00e9 de &#8230; (3 points), comme montr\u00e9 dans l&rsquo;exemple suivant :<\/p>\n<pre><code class=\"language-php\">function test(...$args) { var_dump($args); }\ntest(1, 2, 3);<\/code><\/pre>\n<p>Maintenant <a href=\"https:\/\/wiki.php.net\/rfc\/spread_operator_for_array\" target=\"_blank\" rel=\"noopener noreferrer\">cette RFC PHP 7.4<\/a> propose d&rsquo;\u00e9tendre cette fonctionnalit\u00e9 aux d\u00e9finitions de array :<\/p>\n<pre><code class=\"language-php\">$arr = [...$args];<\/code><\/pre>\n<p>Le premier avantage d\u00e9clar\u00e9 de <strong>Spread Operator dans l&rsquo;expression d&rsquo;un array<\/strong> est la performance. En fait, le <a href=\"https:\/\/wiki.php.net\/rfc\/spread_operator_for_array\" target=\"_blank\" rel=\"noopener noreferrer\">doc du RFC dit<\/a> :<\/p>\n<blockquote><p>L&rsquo;op\u00e9rateur Spread devrait avoir de meilleures performances que <code>array_merge<\/code>. Ce n&rsquo;est pas seulement parce que l&rsquo;op\u00e9rateur spread est une structure de langage tandis que <code>array_merge<\/code> iest une fonction, mais aussi parce que l&rsquo;optimisation du temps de compilation peut \u00eatre performante pour des arrays constants.<\/p><\/blockquote>\n<p>Un avantage significatif de l&rsquo;op\u00e9rateur Spread est qu&rsquo;il supporte tous les objets traversables, alors que la fonction <code>array_merge<\/code> ne supporte que les arrays.<\/p>\n<p>Voici un exemple de unpacking d&rsquo;argument dans l&rsquo;expression d&rsquo;un array :<\/p>\n<pre><code class=\"language-php\">$parts = ['apple', 'pear'];\n$fruits = ['banana', 'orange', ...$parts, 'watermelon'];\nvar_dump($fruits);<\/code><\/pre>\n<p>Si vous ex\u00e9cutez ce code avec PHP 7.3 ou une version ant\u00e9rieure, PHP affiche une Parse Error :<\/p>\n<pre><code class=\"language-php\">Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in \/app\/spread-operator.php on line 3<\/code><\/pre>\n<p>Au lieu de cela, PHP 7.4 retournerait un tableau :<\/p>\n<pre><code class=\"language-php\">array(5) {\n\t[0]=&gt;\n\tstring(6) \"banana\"\n\t[1]=&gt;\n\tstring(6) \"orange\"\n\t[2]=&gt;\n\tstring(5) \"apple\"\n\t[3]=&gt;\n\tstring(4) \"pear\"\n\t[4]=&gt;\n\tstring(10) \"watermelon\"\n}<\/code><\/pre>\n<p>Le RFC indique que nous pouvons \u00e9tendre le m\u00eame tableau plusieurs fois. De plus, nous pouvons utiliser la syntaxe de l\u2019op\u00e9rateur Spread partout dans le tableau, car des \u00e9l\u00e9ments normaux peuvent \u00eatre ajout\u00e9s avant ou apr\u00e8s l&rsquo;op\u00e9rateur Spread. Le code suivant fonctionnera donc comme on peut s&rsquo;y attendre :<\/p>\n<pre><code class=\"language-php\">$arr1 = [1, 2, 3];\n$arr2 = [4, 5, 6];\n$arr3 = [...$arr1, ...$arr2];\n$arr4 = [...$arr1, ...$arr3, 7, 8, 9];<\/code><\/pre>\n<p>Il est \u00e9galement possible de d\u00e9compresser les tableaux retourn\u00e9s par une fonction directement dans un nouveau tableau :<\/p>\n<pre><code class=\"language-php\">function buildArray(){\n\treturn ['red', 'green', 'blue'];\n}\n$arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];<\/code><\/pre>\n<p>PHP 7.4 produit le tableau suivant :<\/p>\n<pre><code class=\"language-php\">array(6) {\n\t[0]=&gt;\n\tstring(3) \"red\"\n\t[1]=&gt;\n\tstring(5) \"green\"\n\t[2]=&gt;\n\tstring(4) \"blue\"\n\t[3]=&gt;\n\tstring(4) \"pink\"\n\t[4]=&gt;\n\tstring(6) \"violet\"\n\t[5]=&gt;\n\tstring(6) \"yellow\"\n}<\/code><\/pre>\n<p>Nous pouvons aussi utiliser la <a href=\"https:\/\/www.php.net\/manual\/en\/language.generators.syntax.php\"> syntaxe G\u00e9n\u00e9rator<\/a>:<\/p>\n<pre><code class=\"language-php\">function generator() {\n\tfor ($i = 3; $i &lt;= 5; $i++) {\n\t\tyield $i;\n\t}\n}\n$arr1 = [0, 1, 2, ...generator()];<\/code><\/pre>\n<p>Mais nous ne sommes pas autoris\u00e9s \u00e0 d\u00e9compresser les tableaux pass\u00e9s par r\u00e9f\u00e9rence. Prenons l&rsquo;exemple suivant :<\/p>\n<pre><code class=\"language-php\">$arr1 = ['red', 'green', 'blue'];\n$arr2 = [...&$arr1];<\/code><\/pre>\n<p>Si nous essayons de d\u00e9compresser un tableau par r\u00e9f\u00e9rence, PHP affiche la Parse Error suivante :<\/p>\n<pre><code class=\"language-php\">Parse error: syntax error, unexpected '&' in \/app\/spread-operator.php on line 3<\/code><\/pre>\n<p>Quoi qu&rsquo;il en soit, si les \u00e9l\u00e9ments du premier tableau sont stock\u00e9s par r\u00e9f\u00e9rence, ils sont \u00e9galement stock\u00e9s par r\u00e9f\u00e9rence dans le second tableau. En voici un exemple :<\/p>\n<pre><code class=\"language-php\">$arr0 = 'red';\n$arr1 = [&$arr0, 'green', 'blue'];\n$arr2 = ['white', ...$arr1, 'black'];<\/code><\/pre>\n<p>Et voici ce que nous obtenons avec PHP 7.4 :<\/p>\n<pre><code>array(5) {\n\t[0]=&gt;\n\tstring(5) \"white\"\n\t[1]=&gt;\n\t<strong>&string(3) \"red\"<\/strong>\n\t[2]=&gt;\n\tstring(5) \"green\"\n\t[3]=&gt;\n\tstring(4) \"blue\"\n\t[4]=&gt;\n\tstring(5) \"black\"\n}<\/code><\/pre>\n<p>La proposition de l&rsquo;op\u00e9rateur Spread a \u00e9t\u00e9 adopt\u00e9e avec 43 voix contre une.<\/p>\n<h3 id=\"arrow-functions\">Fonctions Arrow 2.0 (Short Closures)<\/h3>\n<p>En PHP, les <a href=\"https:\/\/www.php.net\/manual\/en\/functions.anonymous.php\" target=\"_blank\" rel=\"noopener noreferrer\">fonctions anonymes sont<\/a> consid\u00e9r\u00e9es comme assez verbeuses et difficiles \u00e0 impl\u00e9menter et \u00e0 maintenir. <a href=\"https:\/\/wiki.php.net\/rfc\/arrow_functions_v2\" target=\"_blank\" rel=\"noopener noreferrer\">Ce RFC<\/a> propose l&rsquo;introduction de la syntaxe plus courte et plus claire des <strong>fonctions arrow<\/strong> (ou short closures), qui devrait nous permettre de nettoyer de mani\u00e8re significative notre code PHP.<\/p>\n<p>Consider the following example:<\/p>\n<pre><code class=\"language-php\">function cube($n){\n\treturn ($n * $n * $n);\n}\n$a = [1, 2, 3, 4, 5];\n$b = array_map('cube', $a);\nprint_r($b);<\/code><\/pre>\n<p>PHP 7.4 permet d&rsquo;utiliser une syntaxe plus concise, et la fonction ci-dessus pourrait \u00eatre r\u00e9\u00e9crite comme suit :<\/p>\n<pre><code class=\"language-php\">$a = [1, 2, 3, 4, 5];\n$b = array_map(fn($n) =&gt; $n * $n * $n, $a);\nprint_r($b);<\/code><\/pre>\n<p>Actuellement, les, <a href=\"https:\/\/www.php.net\/manual\/en\/functions.anonymous.php\"> fonctions anonymes<\/a> (fermetures) peuvent h\u00e9riter des variables d\u00e9finies dans le scope parent gr\u00e2ce \u00e0 la construction du langage <code>use<\/code> comme indiqu\u00e9 ci-dessous :<\/p>\n<pre><code class=\"language-php\">$factor = 10;\n$calc = function($num) use($factor){\n\treturn $num * $factor;\n};<\/code><\/pre>\n<p>Mais avec PHP 7.4, les variables d\u00e9finies dans le scope parent sont <strong>implicitement captur\u00e9es par valeur<\/strong> (liaison implicite par valeur au scope). On peut donc \u00e9crire l&rsquo;ensemble de la fonction vue ci-dessus sur une seule ligne :<\/p>\n<pre><code class=\"language-php\">$factor = 10;\n$calc = fn($num) =&gt; $num * $factor;<\/code><\/pre>\n<p>La variable d\u00e9finie dans le scope parent peut \u00eatre utilis\u00e9e dans la fonction arrow exactement comme si nous utilisions <code class=\"language-php\">use($var)<\/code>, et il n&rsquo;est pas possible de modifier une variable du scope parent.<\/p>\n<p>La nouvelle syntaxe est une grande am\u00e9lioration au langage car elle nous permet de construire un code plus lisible et maintenable. On peut aussi utiliser des use <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-7-2\/\" target=\"_blank\" rel=\"noopener noreferrer\">types de param\u00e8tres et de retour<\/a>, des valeurs par d\u00e9faut, des listes d&rsquo;arguments de longueur variable (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Variadic_function\">fonctions variadiques<\/a>), on peut passer et retourner par r\u00e9f\u00e9rence, etc. Enfin, les fermetures courtes peuvent \u00e9galement \u00eatre utilis\u00e9es dans les m\u00e9thodes de classe, et elles peuvent utiliser la variable\u00a0et elles peuvent utiliser la variable <code>$this<\/code> tout comme une closure r\u00e9guli\u00e8re.<\/p>\n<p>Cette RFC a \u00e9t\u00e9 approuv\u00e9e par 51 \u00e0 8 voix, nous pouvons donc nous attendre \u00e0 ce qu&rsquo;elle fasse partie des ajouts PHP 7.4.<\/p>\n<h3 id=\"nulled-coalesce-assign-operator\">Op\u00e9rateur d&rsquo;assignation Coalesce Null<\/h3>\n<p>Ajout\u00e9 avec PHP 7, l&rsquo;<a href=\"https:\/\/www.php.net\/manual\/en\/migration70.new-features.php#migration70.new-features.null-coalesce-op\">op\u00e9rateur coalesce<\/a> (<code>??<\/code>) est pratique lorsque nous avons besoin d&rsquo;utiliser un op\u00e9rateur ternaire en conjonction avec <code>isset()<\/code>. Cela retourne le premier op\u00e9rande s&rsquo;il existe et n&rsquo;est pas <code>NULL<\/code>. Sinon, elle retourne le deuxi\u00e8me op\u00e9rande. En voici un exemple :<\/p>\n<pre><code class=\"language-php\">$username = $_GET['user'] ?? 'nobody';<\/code><\/pre>\n<p>Ce que fait ce code est assez simple : <strong>il r\u00e9cup\u00e8re le param\u00e8tre requ\u00eate et d\u00e9finit une valeur par d\u00e9faut s&rsquo;il n&rsquo;existe pas<\/strong>. La signification de cette ligne est claire, mais que se passerait-il si nous avions des noms de variables beaucoup plus longs comme dans cet exemple du RFC ?<\/p>\n<pre><code class=\"language-php\">$this-&gt;request-&gt;data['comments']['user_id'] = $this-&gt;request-&gt;data['comments']['user_id'] ?? 'value';<\/code><\/pre>\n<p>\u00c0 long terme, ce code pourrait \u00eatre un peu difficile \u00e0 maintenir. Ainsi, dans le but d&rsquo;aider les d\u00e9veloppeurs \u00e0 \u00e9crire un code plus intuitif, <a href=\"https:\/\/wiki.php.net\/rfc\/null_coalesce_equal_operator\" target=\"_blank\" rel=\"noopener noreferrer\">cette RFC<\/a> propose l&rsquo;introduction de l&rsquo;<strong>op\u00e9rateur d&rsquo;affectation coalesce null<\/strong> <code>(??=). Ainsi, au lieu d'\u00e9crire le code pr\u00e9c\u00e9dent, nous pourrions \u00e9crire ce qui suit :<\/code><\/p>\n<pre><code class=\"language-php\">$this-&gt;request-&gt;data['comments']['user_id'] ??= 'value';<\/code><\/pre>\n<p>Si la valeur du param\u00e8tre de gauche est <code>null<\/code>, la valeur du param\u00e8tre de droite est utilis\u00e9e.<br \/>\nNotez que, bien que l&rsquo;op\u00e9rateur coalesce soit un op\u00e9rateur de comparaison, <code>??=<\/code> est un op\u00e9rateur d&rsquo;assignation.<\/p>\n<p>Cette proposition a \u00e9t\u00e9 approuv\u00e9e par 37 voix contre 4.<\/p>\n<h3 id=\"typed-properties\">Propri\u00e9t\u00e9s Typed 2.0<\/h3>\n<p>Les d\u00e9clarations de type d&rsquo;argument, ou indices de type, permettent de sp\u00e9cifier le type d&rsquo;une variable qui doit \u00eatre transmise \u00e0 une fonction ou \u00e0 une m\u00e9thode de classe. Les indices de type sont une fonctionnalit\u00e9 disponible depuis PHP 5, et depuis <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-7-2\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 7.2<\/a> nous pouvons les utiliser avec le type de donn\u00e9es <code>object<\/code>. Maintenant PHP 7.4 apporte une allusion de type un pas en avant en ajoutant le support pour les <a href=\"https:\/\/wiki.php.net\/rfc\/typed_properties_v2\" target=\"_blank\" rel=\"noopener noreferrer\">d\u00e9clarations de type de propri\u00e9t\u00e9 de premi\u00e8re classe<\/a>. En voici un exemple tr\u00e8s simple :<\/p>\n<pre><code class=\"language-php\">class User {\n\tpublic int $id;\n\tpublic string $name;\n}<\/code><\/pre>\n<p>Tous les types sont support\u00e9s, \u00e0 l&rsquo;exception de <code>void<\/code> et <code>callable<\/code>:<\/p>\n<pre><code class=\"language-php\">public int $scalarType;\nprotected ClassName $classType;\nprivate ?ClassName $nullableClassType;<\/code><\/pre>\n<p>Le RFC explique la raison pour laquelle <code>void<\/code> et <code>callable<\/code> ne sont pas support\u00e9s :<\/p>\n<blockquote><p>Le type void n&rsquo;est pas support\u00e9, car il n&rsquo;est pas utile et sa s\u00e9mantique n&rsquo;est pas claire.<\/p><\/blockquote>\n<blockquote><p>Le type callable n&rsquo;est pas support\u00e9, car son comportement d\u00e9pend du contexte.<\/p><\/blockquote>\n<p>Ainsi, nous pouvons utiliser en toute s\u00e9curit\u00e9 <code>bool<\/code>, <code>int<\/code>, <code>float<\/code>, <code>string<\/code>, <code>array<\/code>, <code>object<\/code>, <code>iterable<\/code>, <code>self<\/code>, <code>parent<\/code>, tout nom de classe ou d&rsquo;interface, et les <a href=\"https:\/\/kinsta.com\/blog\/php-7-1-0\/#nullable-types\" target=\"_blank\" rel=\"noopener noreferrer\">types nullables<\/a>\u00a0(<code>?type<\/code>).<\/p>\n<p>Les types peuvent \u00eatre utilis\u00e9s sur des propri\u00e9t\u00e9s statiques :<\/p>\n<pre><code class=\"language-php\">public static iterable $staticProp;<\/code><\/pre>\n<p>Ils sont \u00e9galement autoris\u00e9s avec la notation <code>var<\/code>:<\/p>\n<pre><code class=\"language-php\">var bool $flag;<\/code><\/pre>\n<p>Il est possible de d\u00e9finir des valeurs de propri\u00e9t\u00e9s par d\u00e9faut, qui doivent bien s\u00fbr correspondre au type de propri\u00e9t\u00e9 d\u00e9clar\u00e9, mais seules les propri\u00e9t\u00e9s nullables peuvent avoir une valeur <code>null<\/code> par d\u00e9faut:<\/p>\n<pre><code class=\"language-php\">public string $str = \"foo\";\npublic ?string $nullableStr = null;<\/code><\/pre>\n<p>Le m\u00eame type s&rsquo;applique \u00e0 toutes les propri\u00e9t\u00e9s d&rsquo;une m\u00eame d\u00e9claration :<\/p>\n<pre><code class=\"language-php\">public float $x, $y;<\/code><\/pre>\n<p>Que se passe-t-il si nous faisons une erreur sur le type de propri\u00e9t\u00e9 ? Consid\u00e9rez le code suivant :<\/p>\n<pre><code class=\"language-php\">class User {\n\tpublic int $id;\n\tpublic string $name;\n}\n\n$user = new User;\n$user-&gt;id = 10;\n$user-&gt;name = [];<\/code><\/pre>\n<p>Dans le code ci-dessus, nous avons d\u00e9clar\u00e9 un type de propri\u00e9t\u00e9 string, mais nous avons d\u00e9fini un tableau comme valeur de propri\u00e9t\u00e9. Dans un tel sc\u00e9nario, nous obtenons l&rsquo;erreur fatale suivante :<\/p>\n<pre><code class=\"language-php\">Fatal error: Uncaught TypeError: Typed property User::$name must be string, array used in \/app\/types.php:9<\/code><\/pre>\n<p>Ce RFC a \u00e9t\u00e9 approuv\u00e9 par 70 voix contre une.<\/p>\n\n<h3 id=\"weakreferences\">Weak References<\/h3>\n<p>Avec <a href=\"https:\/\/wiki.php.net\/rfc\/weakrefs\" target=\"_blank\" rel=\"noopener noreferrer\">cette RFC<\/a>, PHP 7.4 introduit la classe <a href=\"https:\/\/www.php.net\/manual\/en\/class.weakreference.php\" target=\"_blank\" rel=\"noopener noreferrer\">WeakReference<\/a>, qui permet aux programmeurs de conserver une r\u00e9f\u00e9rence \u00e0 un objet qui n&#8217;emp\u00eache pas que l&rsquo;objet lui-m\u00eame soit d\u00e9truit.<\/p>\n<p>Actuellement PHP supporte les r\u00e9f\u00e9rences faibles en utilisant une extension comme pecl-weakref. Quoi qu&rsquo;il en soit, la nouvelle API est diff\u00e9rente de la classe <code>WeakRef<\/code> document\u00e9e.<\/p>\n<p>Voici <a href=\"https:\/\/www.slideshare.net\/nikita_ppv\/typed-properties-and-more-whats-coming-in-php-74\" target=\"_blank\" rel=\"noopener noreferrer\">un exemple de l&rsquo;auteur<\/a> de cette proposition, Nikita Popov :<\/p>\n<pre><code class=\"language-php\">$object = new stdClass;\n$weakRef = WeakReference::create($object);\n\nvar_dump($weakRef-&gt;get());\nunset($object);\nvar_dump($weakRef-&gt;get());<\/code><\/pre>\n<p>Le premier <code>var_dump<\/code> imprime <code class=\"language-php\">object(stdClass)#1 (0) {}<\/code>, tandis que le second <code>var_dump<\/code> prints <code>NULL<\/code>, car l&rsquo;objet r\u00e9f\u00e9renc\u00e9 a \u00e9t\u00e9 d\u00e9truit.<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Slides for my PHP 7.4 talk at <a href=\"https:\/\/twitter.com\/hashtag\/PHPRussia2019?src=hash&amp;ref_src=twsrc%5Etfw\">#PHPRussia2019<\/a>. Was a great conference!<a href=\"https:\/\/t.co\/zLr9Bj2aKl\">https:\/\/t.co\/zLr9Bj2aKl<\/a><\/p>\n<p>&mdash; Nikita Popov (@nikita_ppv) <a href=\"https:\/\/twitter.com\/nikita_ppv\/status\/1130188147940352000?ref_src=twsrc%5Etfw\">May 19, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Ce RFC est pass\u00e9 avec 28 \u00e0 5 votes.<\/p>\n<h3 id=\"covariant-return-types-contravariant-parameters\">Retours covariant et param\u00e8tre contravariant<\/h3>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Covariance_and_contravariance_(computer_science)\" target=\"_blank\" rel=\"noopener noreferrer\">La variance<\/a> est une propri\u00e9t\u00e9 des hi\u00e9rarchies de classes qui d\u00e9crit comment les types d&rsquo;un constructeur de type affectent les <a href=\"https:\/\/en.wikipedia.org\/wiki\/Subtyping\" target=\"_blank\" rel=\"noopener noreferrer\">sous-types<\/a>. En g\u00e9n\u00e9ral, un constructeur de type peut \u00eatre :<\/p>\n<ul>\n<li><strong>Invariant<\/strong> : si le type du super-type limite le type du sous-type.<\/li>\n<li><strong>Covariant<\/strong> : si l&rsquo;ordre des types est pr\u00e9serv\u00e9 (les types sont class\u00e9s de plus sp\u00e9cifique \u00e0 plus g\u00e9n\u00e9rique).<\/li>\n<li><strong>Contravariant<\/strong> : s&rsquo;il inverse l&rsquo;ordre (les types sont class\u00e9s de plus g\u00e9n\u00e9rique \u00e0 plus sp\u00e9cifique).<\/li>\n<\/ul>\n<p>Actuellement, PHP a la plupart du temps des param\u00e8tres invariants et des types de retour, \u00e0 quelques exceptions pr\u00e8s. Cette RFC propose de permettre la covariance et la contravariance sur les types de param\u00e8tres et les types de retour, en fournissant \u00e9galement plusieurs exemples de code.<\/p>\n<p>Voici un exemple de <strong>type de retour covariant<\/strong> :<\/p>\n<pre><code class=\"language-php\">interface Factory {\n\tfunction make(): object;\n}\n\nclass UserFactory implements Factory {\n\tfunction make(): User;\n}<\/code><\/pre>\n<p>Et voici un exemple de <strong>type de param\u00e8tre contravariant<\/strong> :<\/p>\n<pre><code class=\"language-php\">interface Concatable {\n\tfunction concat(Iterator $input); \n}\n \nclass Collection implements Concatable {\n\t\/\/ accepts all iterables, not just Iterator\n\tfunction concat(iterable $input) {\/* . . . *\/}\n}<\/code><\/pre>\n<p>Voir <a href=\"https:\/\/wiki.php.net\/rfc\/covariant-returns-and-contravariant-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">le RFC<\/a> pour un examen plus approfondi de la covariance et de la contravariance en PHP 7.4.<\/p>\n<p>Ce RFC a obtenu 39 voix contre une.<\/p>\n<h3 id=\"preloading\">Preloading<\/h3>\n<p><a href=\"https:\/\/wiki.php.net\/rfc\/preload\" target=\"_blank\" rel=\"noopener noreferrer\">Cette proposition<\/a> de Dmitry Stogov est l&rsquo;une de nos pr\u00e9f\u00e9r\u00e9es parce qu&rsquo;elle devrait apporter une augmentation significative des performances. Le <strong>preloading<\/strong> est le processus de chargement des biblioth\u00e8ques et des frameworks dans l&rsquo;<a href=\"https:\/\/www.php.net\/manual\/en\/book.opcache.php\" target=\"_blank\" rel=\"noopener noreferrer\">OPCache<\/a> \u00e0 l&rsquo;initialisation du module (en savoir plus sur le <a href=\"http:\/\/www.phpinternalsbook.com\/php7\/extensions_design\/php_lifecycle.html\" target=\"_blank\" rel=\"noopener noreferrer\">cycle de vie de PHP<\/a>).<\/p>\n<figure style=\"width: 335px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/05\/cycle-de-vie-de-php.png\" alt=\"Cycle de vie de PHP\" width=\"335\" height=\"323\"><figcaption class=\"wp-caption-text\">Cycle de vie de PHP (Source de l&rsquo;image : <a href=\"https:\/\/phpinternals.net\/categories\/extensions\">PHP Internals<\/a>)<\/figcaption><\/figure>\n<p>Voici comment fonctionne le preloading dans les mots de Dmitry :<\/p>\n<blockquote><p>Au d\u00e9marrage du serveur &#8211; avant l&rsquo;ex\u00e9cution de tout code d&rsquo;application &#8211; nous pouvons charger un certain ensemble de fichiers PHP en m\u00e9moire &#8211; et rendre leur contenu \u00ab\u00a0disponible en permanence\u00a0\u00bb pour toutes les requ\u00eates ult\u00e9rieures qui seront trait\u00e9es par ce serveur. Toutes les fonctions et classes d\u00e9finies dans ces fichiers seront disponibles pour les requ\u00eates pr\u00eates \u00e0 l&#8217;emploi, exactement comme les entit\u00e9s internes.<\/p><\/blockquote>\n<p>Ces fichiers sont charg\u00e9s au d\u00e9marrage du serveur, sont ex\u00e9cut\u00e9s avant toute application et restent disponibles pour toute demande future. C&rsquo;est formidable en termes de performances.<\/p>\n<p>Le preloading est contr\u00f4l\u00e9 par une directive <code>php.ini<\/code> sp\u00e9cifique : <code>opcache.preload<\/code>. Cette directive sp\u00e9cifie un script PHP \u00e0 compiler et ex\u00e9cuter au d\u00e9marrage du serveur. Ce fichier peut \u00eatre utilis\u00e9 pour pr\u00e9charger des fichiers suppl\u00e9mentaires, soit en les incluant, soit via la fonction <code>opcache_compile_file()<\/code> ((en savoir plus sur la <a href=\"https:\/\/www.php.net\/manual\/en\/function.opcache-compile-file.php\">documentation PHP<\/a>).<\/p>\n<p>Mais il y a un inconv\u00e9nient. En fait, le RFC d\u00e9clare explicitement :<\/p>\n<blockquote><p>Les fichiers pr\u00e9charg\u00e9s restent en m\u00e9moire cache dans la m\u00e9moire opcache pour toujours. La modification de leurs fichiers sources correspondants n&rsquo;aura aucun effet sans un autre red\u00e9marrage du serveur.<\/p><\/blockquote>\n<p>Cependant, toutes les fonctions d\u00e9finies dans les fichiers pr\u00e9charg\u00e9s seront charg\u00e9es en permanence dans les tables de fonctions et de classes PHP, et resteront disponibles pour toute requ\u00eate future. Il en r\u00e9sultera de bonnes am\u00e9liorations de la performance, m\u00eame si ces am\u00e9liorations peuvent \u00eatre tr\u00e8s variables.<\/p>\n<p>Vous pouvez en savoir plus sur les limitations et exceptions du preloading sur la \u00a0<a href=\"https:\/\/wiki.php.net\/rfc\/preload\" target=\"_blank\" rel=\"noopener noreferrer\">page officielle du RFC sur le preloading<\/a>.<\/p>\n<h3 id=\"serialization\">Nouveau m\u00e9canisme de s\u00e9rialisation d&rsquo;objets personnalis\u00e9s<\/h3>\n<p>C&rsquo;est <a href=\"https:\/\/nikic.github.io\/aboutMe.html\" target=\"_blank\" rel=\"noopener noreferrer\">une autre proposition<\/a> de Nikita Popov approuv\u00e9e \u00e0 une large majorit\u00e9 des voix.<\/p>\n<p>Actuellement, nous avons deux m\u00e9canismes diff\u00e9rents pour la s\u00e9rialisation personnalis\u00e9e d&rsquo;objets en PHP :<\/p>\n<ul>\n<li>Les m\u00e9thodes magiques <code>__sleep()<\/code> et <code>__wakeup()<\/code><\/li>\n<li>L&rsquo;interface <code>Serializable<\/code><\/li>\n<\/ul>\n<p>Selon Nikita, ces deux options ont des probl\u00e8mes qui conduisent \u00e0 un code complexe et peu fiable. Vous pouvez plonger profond\u00e9ment dans ce sujet dans le <a href=\"https:\/\/wiki.php.net\/rfc\/custom_object_serialization\">RFC<\/a>. Ici, je mentionne simplement que le nouveau m\u00e9canisme de s\u00e9rialisation devrait pr\u00e9venir ces probl\u00e8mes en fournissant deux nouvelles m\u00e9thodes magiques, <code>__serialize()<\/code> et <code>__unserialize()<\/code>, qui combinent les deux m\u00e9canismes existants.<\/p>\n<p>Cette proposition a \u00e9t\u00e9 adopt\u00e9e avec 20 contre 7 voix.<\/p>\n<h3 id=\"deprecations\">D\u00e9pr\u00e9ciations<\/h3>\n<p>Les fonctions\/fonctionnalit\u00e9s suivantes seront obsol\u00e8tes avec PHP 7.4. Pour une liste plus compl\u00e8te des d\u00e9pr\u00e9ciations, consultez <a href=\"https:\/\/github.com\/php\/php-src\/blob\/PHP-7.4\/UPGRADING\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 7.4 Upgrade Notes<\/a>.<\/p>\n<h4>Modifier la priorit\u00e9 de l&rsquo;op\u00e9rateur de concat\u00e9nation<\/h4>\n<p>Actuellement, en PHP, les op\u00e9rateurs arithm\u00e9tiques \u00ab\u00a0+\u00a0\u00bb et \u00ab\u00a0-\u00ab\u00a0, et l&rsquo;op\u00e9rateur de cha\u00eene \u00ab\u00a0.\u00a0\u00bb sont laiss\u00e9s associatifs et ont la m\u00eame priorit\u00e9 (pour en savoir plus sur la <a href=\"https:\/\/www.php.net\/manual\/en\/language.operators.precedence.php\" target=\"_blank\" rel=\"noopener noreferrer\">priorit\u00e9 de l&rsquo;op\u00e9rateur<\/a>).<\/p>\n<p>\u00c0 titre d&rsquo;exemple, consid\u00e9rons la ligne suivante :<\/p>\n<pre><code class=\"language-php\">echo \"sum: \" . $a + $b;<\/code><\/pre>\n<p>En PHP 7.3, ce code produit l&rsquo;avertissement suivant :<\/p>\n<pre><code class=\"language-php\">Warning: A non-numeric value encountered in \/app\/types.php on line 4<\/code><\/pre>\n<p>Ceci parce que la concat\u00e9nation est \u00e9valu\u00e9e de gauche \u00e0 droite. C&rsquo;est la m\u00eame chose que d&rsquo;\u00e9crire le code suivant :<\/p>\n<pre><code class=\"language-php\">echo (\"sum: \" . $a) + $b;<\/code><\/pre>\n<p><a href=\"https:\/\/wiki.php.net\/rfc\/concatenation_precedence\" target=\"_blank\" rel=\"noopener noreferrer\">Cette RFC<\/a> propose de changer la priorit\u00e9 des op\u00e9rateurs, en donnant \u00e0 \u00ab\u00a0. \u00a0\u00bb une priorit\u00e9 inf\u00e9rieure \u00e0 celle des op\u00e9rateurs \u00ab\u00a0+\u00a0\u00bb et \u00ab\u00a0-\u00ab\u00a0, de sorte que les additions et soustractions soient toujours effectu\u00e9es avant la concat\u00e9nation de cha\u00eenes. Cette ligne de code devrait \u00eatre \u00e9quivalente \u00e0 ce qui suit :<\/p>\n<pre><code class=\"language-php\">echo \"sum: \" . ($a + $b);<\/code><\/pre>\n<p>Il s&rsquo;agit d&rsquo;une proposition en deux \u00e9tapes :<\/p>\n<ul>\n<li>A partir de la version 7.4, PHP devrait \u00e9mettre un avis d&rsquo;obsolescence lorsqu&rsquo;il rencontre une expression non entre parenth\u00e8ses avec \u00ab\u00a0+\u00a0\u00bb, \u00ab\u00a0&#8211;\u00a0\u00bb et \u00ab\u00a0.<\/li>\n<li>Le changement effectif de priorit\u00e9 de ces op\u00e9rateurs doit \u00eatre ajout\u00e9 avec <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-8\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8<\/a>.<\/li>\n<\/ul>\n<p>Les deux propositions ont \u00e9t\u00e9 approuv\u00e9es \u00e0 une large majorit\u00e9 des voix.<\/p>\n<h4>Op\u00e9rateur ternaire associatif gauche d\u00e9pr\u00e9ci\u00e9<\/h4>\n<p>En PHP, l&rsquo;op\u00e9rateur ternaire, contrairement \u00e0 beaucoup d&rsquo;autres langages, est associatif gauche. Selon Nikita Popof, cela peut \u00eatre d\u00e9routant pour les programmeurs qui changent de langue.<\/p>\n<p>Actuellement, en PHP, le code suivant est correct :<\/p>\n<pre><code class=\"language-php\">$b = $a == 1 ? 'one' : $a == 2 ? 'two' : $a == 3 ? 'three' : 'other';<\/code><\/pre>\n<p>C&rsquo;est interpr\u00e9t\u00e9 comme ceci :<\/p>\n<pre><code class=\"language-php\">$b = (($a == 1 ? 'one' : $a == 2) ? 'two' : $a == 3) ? 'three' : 'other';<\/code><\/pre>\n<p>Et cela pourrait mener \u00e0 des erreurs, car ce n&rsquo;est peut-\u00eatre pas ce que nous avons l&rsquo;intention de faire. Ce RFC propose donc de d\u00e9pr\u00e9cier et de supprimer l&rsquo;utilisation de l&rsquo;association de gauche pour les op\u00e9rateurs ternaires et de forcer les d\u00e9veloppeurs \u00e0 utiliser des parenth\u00e8ses.<\/p>\n<p>Il s&rsquo;agit d&rsquo;une autre proposition en deux \u00e9tapes :<\/p>\n<ul>\n<li>\u00c0 partir de PHP 7.4, les ternaires imbriqu\u00e9s sans utilisation explicite de parenth\u00e8ses lanceront un avertissement de d\u00e9pr\u00e9ciation.<\/li>\n<li><a href=\"https:\/\/kinsta.com\/fr\/blog\/php-8\/\" target=\"_blank\" rel=\"noopener noreferrer\">\u00c0 partir de PHP 8.0<\/a>, il y aura une erreur de compilation.<\/li>\n<\/ul>\n<p>Cette proposition a \u00e9t\u00e9 approuv\u00e9e par 35 voix contre 10.<\/p>\n<h2 class=\"has-anchor-hash\">Que signifie PHP 7.4 pour les utilisateurs de WordPress ?<span id=\"what-does-php-73-mean-for-wordpress-users\" class=\"anchor-hash\" aria-hidden=\"true\"><\/span><\/h2>\n<p>PHP est le langage de programmation c\u00f4t\u00e9 serveur le plus utilis\u00e9 sur le web. <a href=\"https:\/\/w3techs.com\/technologies\/details\/pl-php\/all\/all\">Selon W3Techs<\/a>, au 2 d\u00e9cembre 2019, PHP est utilis\u00e9 par 78,9% de tous les sites web dont ils peuvent d\u00e9tecter le langage de programmation c\u00f4t\u00e9 serveur.<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"disc\" selector=\"h3\" count-number=\"5\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<figure id=\"attachment_63301\" aria-describedby=\"caption-attachment-63301\" style=\"width: 1376px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-63301 size-full\" src=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/06\/utilisation-php-1.png\" alt=\"Utilisation de PHP (d\u00e9cembre 2019)\" width=\"1376\" height=\"654\"><figcaption id=\"caption-attachment-63301\" class=\"wp-caption-text\">Utilisation de PHP (d\u00e9cembre 2019)<\/figcaption><\/figure>\n<p>Malheureusement, <a href=\"https:\/\/w3techs.com\/technologies\/details\/pl-php\/5\/all\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 5 est toujours utilis\u00e9 par 44.0% de tous les sites web<\/a> avec un langage de programmation c\u00f4t\u00e9 serveur connu. Si vous ajoutez <a href=\"https:\/\/w3techs.com\/technologies\/details\/pl-php\/7\/all\" target=\"_blank\" rel=\"noopener noreferrer\">le nombre d&rsquo;utilisateurs utilisant toujours PHP 7.0 et 7.1<\/a>, il s&rsquo;av\u00e8re qu&rsquo;une grande majorit\u00e9 des sites Web utilisent des versions non support\u00e9es de PHP.<\/p>\n<figure id=\"attachment_63275\" aria-describedby=\"caption-attachment-63275\" style=\"width: 1726px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-63275 size-full\" src=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/06\/versions-phpsupportees-wordpress-1.png\" alt=\"Supported PHP Versions for WordPress\" width=\"1726\" height=\"332\"><figcaption id=\"caption-attachment-63275\" class=\"wp-caption-text\">Versions PHP support\u00e9es (Source de l&rsquo;image : <a href=\"https:\/\/www.php.net\/supported-versions.php\">Supported Versions<\/a>)<\/figcaption><\/figure>\n<p>Selon la <a href=\"https:\/\/wordpress.org\/about\/stats\/\" target=\"_blank\" rel=\"noopener noreferrer\">page<\/a> officielle <a href=\"https:\/\/wordpress.org\/about\/stats\/\" target=\"_blank\" rel=\"noopener noreferrer\">de WordPress Stats<\/a>, au moment d&rsquo;\u00e9crire ces lignes, 64% de tous les sites web WordPress utilisent des versions non support\u00e9es de PHP. Seulement un peu plus de 13% utilisent la derni\u00e8re version : <a href=\"https:\/\/kinsta.com\/fr\/changelog\/php-7-3\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 7.3<\/a>. Et la derni\u00e8re version, PHP 7.4, n&rsquo;appara\u00eet m\u00eame pas encore. Vous pouvez voir qu&rsquo;une grande majorit\u00e9 d&rsquo;utilisateurs, plus de 23%, tournent toujours sous PHP 5.6.<\/p>\n<figure id=\"attachment_63288\" aria-describedby=\"caption-attachment-63288\" style=\"width: 1390px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-63288\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2017\/03\/wordpress-php-versions-stats-3.png\" alt=\"WordPress PHP version Stats\" width=\"1390\" height=\"1156\" data-must_clone=\"true\"><figcaption id=\"caption-attachment-63288\" class=\"wp-caption-text\">WordPress PHP version Stats<\/figcaption><\/figure>\n<p>Nous vous recommandons fortement de demander \u00e0 votre h\u00e9bergeur une <a href=\"https:\/\/kinsta.com\/fr\/blog\/versions-php\/\" target=\"_blank\" rel=\"noopener noreferrer\">version support\u00e9e de PHP<\/a>, de pr\u00e9f\u00e9rence selon les <a href=\"https:\/\/wordpress.org\/about\/requirements\/\" target=\"_blank\" rel=\"noopener noreferrer\">exigences officielles de WordPress<\/a>. Au moment d&rsquo;\u00e9crire ces lignes, en mai 2019, WordPress exige :<\/p>\n<ul>\n<li>PHP version 7.3 ou sup\u00e9rieure.<\/li>\n<li>MySQL version 5.6 ou sup\u00e9rieure OU <a href=\"https:\/\/kinsta.com\/fr\/blog\/mariadb-mysql\/\">MariaDB<\/a> version 10.1 ou sup\u00e9rieure.<\/li>\n<li>Support du HTTPS<\/li>\n<\/ul>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Upgraded my <a href=\"https:\/\/twitter.com\/kinsta?ref_src=twsrc%5Etfw\">@kinsta<\/a> site to PHP 7.4 and it is like 10x faster. Woot!<\/p>\n<p>&mdash; Ronald Huereca (@RonaldHuereca) <a href=\"https:\/\/twitter.com\/RonaldHuereca\/status\/1201513866313777158?ref_src=twsrc%5Etfw\">December 2, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<h3 class=\"has-anchor-hash\">Performances de PHP 7<span id=\"php-7-performance\" class=\"anchor-hash\" aria-hidden=\"true\"><\/span><\/h3>\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, \u00e0 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<li>Andrei Avram a vu des temps d&rsquo;ex\u00e9cution plus rapides et <a href=\"https:\/\/blog.andreiavram.ro\/updates-php-performance-increase\/\">moins de m\u00e9moire utilis\u00e9e avec PHP 7.4<\/a> par rapport \u00e0 PHP 7.3<\/li>\n<li>Phoronix a fait quelques <a href=\"https:\/\/phoronix.com\/scan.php?page=news_item&#038;px=PHP-7.4-Early-Benchmarks\">tests de benchmark avec PHP 7.4 Alpha<\/a> et a constat\u00e9 qu&rsquo;il \u00e9tait l\u00e9g\u00e8rement plus rapide que PHP 7.3.<\/li>\n<\/ul>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Upgraded my <a href=\"https:\/\/twitter.com\/kinsta?ref_src=twsrc%5Etfw\">@kinsta<\/a> site to PHP 7.4 and it is like 10x faster. Woot!<\/p>\n<p>&mdash; Ronald Huereca (@RonaldHuereca) <a href=\"https:\/\/twitter.com\/RonaldHuereca\/status\/1201513866313777158?ref_src=twsrc%5Etfw\">December 2, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Nous avons ex\u00e9cut\u00e9 nos propres <a href=\"https:\/\/kinsta.com\/fr\/blog\/comparaison-php\/\" target=\"_blank\" rel=\"noopener noreferrer\">tests de performance PHP<\/a> avec PHP 7.3. Nous avons vu que WordPress 5.0 sur PHP 7.3 pouvait ex\u00e9cuter presque trois fois plus de transactions (requ\u00eates) par seconde que PHP 5.6. <strong>Nous publierons bient\u00f4t des benchmarks pour PHP 7.4 !<\/strong><\/p>\n<figure style=\"width: 940px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2018\/12\/benchmarks-php-v2wordpress-5-0.png\" alt=\"Benchmarks PHP WordPress 5.0\" width=\"940\" height=\"788\"><figcaption class=\"wp-caption-text\">Benchmarks PHP WordPress 5.0<\/figcaption><\/figure>\n<ul>\n<li>Benchmarks avec WordPress 5.0 : 91,64 req\/sec<\/li>\n<li>Benchmarks PHP 7.0 avec WordPress 5.0: 206.71 req\/sec<\/li>\n<li>Benchmarks PHP 7.1 avec WordPress 5.0 : 210.98 req\/sec<\/li>\n<li>Benchmarks PHP 7.2 avec WordPress 5.0 : 229.18 req\/sec<span class=\"Apple-converted-space\">\u00a0<\/span><\/li>\n<li><strong>Benchmarks PHP 7.3 avec WordPress 5.0 : 253.20 req\/sec<\/strong> \ud83c\udfc6<\/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 class=\"has-anchor-hash\">V\u00e9rification de votre version PHP<span id=\"checking-your-php-version\" class=\"anchor-hash\" aria-hidden=\"true\"><\/span><\/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\/\" target=\"_blank\" rel=\"noopener noreferrer\">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: 1542px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/06\/verifier-la-version-php-pingdom.png\" alt=\"V\u00e9rifier la version PHP dans Pingdom\" width=\"1542\" height=\"864\"><figcaption class=\"wp-caption-text\">V\u00e9rifier la version PHP dans Pingdom<\/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>. Cependant, beaucoup le font pour des raisons de s\u00e9curit\u00e9 (y compris Kinsta). Si c&rsquo;est le cas, vous ne verrez peut-\u00eatre pas votre version de PHP. Dans ce cas, si vous utilisez <a href=\"https:\/\/kinsta.com\/fr\/blog\/wordpress-5-2\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress 5.2<\/a> ou une version sup\u00e9rieure, vous pouvez utiliser un nouvel outil Sant\u00e9 du site. Rendez-vous sur \u00ab\u00a0Outils\u00a0\u00bb \u2192 \u00ab\u00a0Sant\u00e9 du site\u00a0\u00bb \u2192 \u00ab\u00a0Info\u00a0\u00bb et dans la section \u00ab\u00a0Serveur\u00a0\u00bb vous trouverez la version PHP de votre serveur.<\/p>\n<figure style=\"width: 1954px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/06\/verifier-la-version-php.png\" alt=\"V\u00e9rifier la version PHP avec l'outil Sant\u00e9 du site de WordPress\" width=\"1954\" height=\"720\"><figcaption class=\"wp-caption-text\">V\u00e9rifier la version PHP avec l&rsquo;outil Sant\u00e9 du site de WordPress<\/figcaption><\/figure>\n<p>Alternativement, vous pouvez installer un plugin gratuit comme <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. D&rsquo;autres fa\u00e7ons de voir votre version PHP incluent le <a href=\"https:\/\/kinsta.com\/fr\/blog\/versions-php\/\" target=\"_blank\" rel=\"noopener noreferrer\">t\u00e9l\u00e9chargement d&rsquo;un fichier via FTP<\/a>, ou simplement en contactant votre h\u00e9bergeur et en lui demandant.<\/p>\n<h3 class=\"has-anchor-hash\">Mise \u00e0 jour vers PHP 7.4<span id=\"updating-to-php-74\" class=\"anchor-hash\" aria-hidden=\"true\"><\/span><\/h3>\n<p>La version finale de PHP 7.4 n&rsquo;est pas encore arriv\u00e9e. Cependant, <strong>vous pouvez commencer \u00e0 tester la version b\u00eata (PHP 7.4-RC4) chez Kinsta d\u00e8s maintenant. Alternativement<\/strong>, vous pouvez <a href=\"https:\/\/kinsta.com\/fr\/blog\/installer-wordpress-localement\/\" target=\"_blank\" rel=\"noopener noreferrer\">tester votre site WordPress localement<\/a> ou v\u00e9rifier vos scripts dans un environnement comme <a href=\"https:\/\/docs.docker.com\/get-started\/\" target=\"_blank\" rel=\"noopener noreferrer\">Docker<\/a>, qui vous permet de tester diff\u00e9rentes versions de PHP depuis la ligne de commande.<\/p>\n<p>La fa\u00e7on la plus simple de commencer les tests est de <a href=\"https:\/\/kinsta.com\/fr\/docs\/hebergement-wordpress\/environnement-staging\/\">cr\u00e9er un environnement de staging<\/a> qui ressemblera de pr\u00e8s \u00e0 votre site de production en direct. Dans le tableau de bord MyKinsta, cliquez sur votre site et passez \u00e0 la mise en sc\u00e8ne.<\/p>\n<figure id=\"attachment_56667\" aria-describedby=\"caption-attachment-56667\" style=\"width: 2393px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-56667 size-full\" src=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/mykinsta-wordpress-staging-environment--e1651911305896.png\" alt=\"Cr\u00e9er un environnement de staging WordPress\" width=\"2393\" height=\"1138\" srcset=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/mykinsta-wordpress-staging-environment--e1651911305896.png 2393w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/mykinsta-wordpress-staging-environment--e1651911305896-300x143.png 300w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/mykinsta-wordpress-staging-environment--e1651911305896-1024x487.png 1024w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/mykinsta-wordpress-staging-environment--e1651911305896-768x365.png 768w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/mykinsta-wordpress-staging-environment--e1651911305896-1536x730.png 1536w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/mykinsta-wordpress-staging-environment--e1651911305896-2048x974.png 2048w\" sizes=\"auto, (max-width: 2393px) 100vw, 2393px\" \/><figcaption id=\"caption-attachment-56667\" class=\"wp-caption-text\">Cr\u00e9er un environnement de staging WordPress<\/figcaption><\/figure>\n<p>Ensuite, dans le menu \u00ab\u00a0Outils\u00a0\u00bb, passez votre moteur PHP en PHP 7.4 (Beta). Vous pouvez ensuite commencer \u00e0 tester pour vous assurer de la compatibilit\u00e9 de votre code, de vos plugins tiers et de vos th\u00e8mes.<\/p>\n<p>Comme pour les versions pr\u00e9c\u00e9dentes de PHP, notre <a href=\"https:\/\/kinsta.com\/fr\/changelog\/opimiser-bdd-automatiquement\/#selfhealing-php\">fonction PHP Self-Healing<\/a> prend enti\u00e8rement en charge PHP 7.4. Si PHP tombe en panne pour une raison quelconque, nous le red\u00e9marrons automatiquement. Si le red\u00e9marrage ne corrige pas le probl\u00e8me, notre syst\u00e8me de surveillance alertera notre \u00e9quipe <a href=\"https:\/\/kinsta.com\/fr\/blog\/sysadmin\/\">d&rsquo;administrateurs syst\u00e8me<\/a> pour qu&rsquo;elle recherche la cause du probl\u00e8me.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>M\u00eame s&rsquo;il s&rsquo;agit d&rsquo;une version stable, nous <strong>encourageons fortement tout le monde \u00e0 tester PHP 7.4<\/strong> avant de l&rsquo;utiliser sur votre site en production.<\/p>\n<\/aside>\n\n<figure id=\"attachment_56668\" aria-describedby=\"caption-attachment-56668\" style=\"width: 2686px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-56668\" src=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/mykinsta-change-php-7.4.png\" alt=\"Changer en PHP 7.4\" width=\"2686\" height=\"1702\" srcset=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/mykinsta-change-php-7.4.png 2686w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/mykinsta-change-php-7.4-300x190.png 300w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/mykinsta-change-php-7.4-1024x649.png 1024w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/mykinsta-change-php-7.4-768x487.png 768w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/mykinsta-change-php-7.4-1536x973.png 1536w, https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/mykinsta-change-php-7.4-2048x1298.png 2048w\" sizes=\"auto, (max-width: 2686px) 100vw, 2686px\" \/><figcaption id=\"caption-attachment-56668\" class=\"wp-caption-text\">Changer en PHP 7.4<\/figcaption><\/figure>\n<p>Voir les d\u00e9tails concernant la <a href=\"https:\/\/kinsta.com\/fr\/changelog\/php-7-4\/\">version 7.4 de PHP chez Kinsta<\/a>.<\/p>\n<h3>Installation et ex\u00e9cution de PHP 7.4 sur Docker<\/h3>\n<p>Vous voulez le tester sur Docker ? Heureusement, vous n&rsquo;avez pas besoin de compiler et configurer PHP 7.4 manuellement. Si Docker est d\u00e9j\u00e0 install\u00e9 sur votre syst\u00e8me, il vous suffit d&rsquo;installer l&rsquo;<a href=\"https:\/\/github.com\/devilbox\/docker-php-fpm-7.4\">image non officielle de Docker PHP-FPM 7.4<\/a> et d&rsquo;ex\u00e9cuter vos tests depuis la ligne de commande en quelques secondes.<\/p>\n<figure style=\"width: 570px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/05\/installation-de-l-image-nginx-de-docker.png\" alt=\"Installation de l'image Nginx de docker\" width=\"570\" height=\"365\"><figcaption class=\"wp-caption-text\">Installation de l&rsquo;image Nginx de docker<\/figcaption><\/figure>\n<p>Si vous pr\u00e9f\u00e9rez ex\u00e9cuter votre code PHP 7.4 dans votre navigateur, vous devez \u00e9galement installer une image <a href=\"https:\/\/kinsta.com\/fr\/blog\/nginx-vs-apache\/\" target=\"_blank\" rel=\"noopener noreferrer\">Nginx ou Apache<\/a>. Mais ne vous inqui\u00e9tez pas. Il suffit de suivre les <a href=\"https:\/\/github.com\/devilbox\/docker-php-fpm-7.4#example\" target=\"_blank\" rel=\"noopener noreferrer\">instructions du d\u00e9veloppeur<\/a>. Copiez et collez les commandes de la page Docker Image dans votre outil de ligne de commande, et vous \u00eates pr\u00eat \u00e0 vous lancer.<\/p>\n\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Dans cet article, nous avons couvert un bon nombre de changements et d&rsquo;ajouts auxquels nous pouvons nous attendre avec la sortie de PHP 7.4. Si vous recherchez la liste compl\u00e8te des fonctionnalit\u00e9s, ainsi que la documentation RFC officielle, consultez les ressources suivantes :<\/p>\n<ul>\n<li><a href=\"https:\/\/wiki.php.net\/rfc#php_74\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 7.4 Demandes de commentaires<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/php\/php-src\/blob\/PHP-7.4\/UPGRADING\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 7.4 Upgrade Notes<\/a><\/li>\n<li><a href=\"https:\/\/wiki.php.net\/todo\/php74\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 7.4 Preparation Tasks<\/a><\/li>\n<\/ul>\n<p>Nous vous tiendrons au courant des derni\u00e8res informations concernant PHP 7.4. Si vous \u00eates un client Kinsta, vous pouvez d\u00e9j\u00e0 commencer \u00e0 d\u00e9placer vos sites WordPress vers la derni\u00e8re version.<\/p>\n<p>\u00cates-vous pr\u00eat \u00e0 <a href=\"https:\/\/kinsta.com\/fr\/blog\/installer-php\/\">tester les prochaines fonctionnalit\u00e9s de PHP<\/a> ? Laquelle est votre pr\u00e9f\u00e9r\u00e9e ? Faites-nous part de vos id\u00e9es dans les commentaires ci-dessous.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PHP 7.4, la prochaine version mineure de PHP 7, est sortie depuis le 28 novembre 2019. Il est donc temps pour nous de nous plonger dans &#8230;<\/p>\n","protected":false},"author":36,"featured_media":28368,"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-28340","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.4 (Fonctionnalit\u00e9s, D\u00e9pr\u00e9ciations, Vitesse)<\/title>\n<meta name=\"description\" content=\"PHP 7.4 vient avec de nouvelles fonctionnalit\u00e9s, des d\u00e9pr\u00e9ciations et une am\u00e9lioration des performances. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.4 !\" \/>\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-4\/\" \/>\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.4 (Fonctionnalit\u00e9s, D\u00e9pr\u00e9ciations, Vitesse)\" \/>\n<meta property=\"og:description\" content=\"PHP 7.4 vient avec de nouvelles fonctionnalit\u00e9s, des d\u00e9pr\u00e9ciations et une am\u00e9lioration des performances. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.4 !\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/php-7-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=\"2019-07-03T11:25:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-20T09:06:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/11\/FR-Homepage-featured-image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\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.4 vient avec de nouvelles fonctionnalit\u00e9s, des d\u00e9pr\u00e9ciations et une am\u00e9lioration des performances. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.4 !\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/wp-content\/uploads\/2019\/06\/php-7.4.jpg\" \/>\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-4\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/\"},\"author\":{\"name\":\"Carlo Daniele\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\"},\"headline\":\"Quoi de neuf dans PHP 7.4 (Fonctionnalit\u00e9s, D\u00e9pr\u00e9ciations, Vitesse)\",\"datePublished\":\"2019-07-03T11:25:44+00:00\",\"dateModified\":\"2024-09-20T09:06:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/\"},\"wordCount\":3913,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/php-7-4.jpg\",\"keywords\":[\"php\",\"webdev\"],\"articleSection\":[\"D\u00e9veloppement WordPress\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/\",\"name\":\"Quoi de neuf dans PHP 7.4 (Fonctionnalit\u00e9s, D\u00e9pr\u00e9ciations, Vitesse)\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/php-7-4.jpg\",\"datePublished\":\"2019-07-03T11:25:44+00:00\",\"dateModified\":\"2024-09-20T09:06:48+00:00\",\"description\":\"PHP 7.4 vient avec de nouvelles fonctionnalit\u00e9s, des d\u00e9pr\u00e9ciations et une am\u00e9lioration des performances. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.4 !\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/php-7-4.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/php-7-4.jpg\",\"width\":1460,\"height\":730,\"caption\":\"Quoi de neuf dans PHP 7.4\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-7-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\":\"Quoi de neuf dans PHP 7.4 (Fonctionnalit\u00e9s, D\u00e9pr\u00e9ciations, Vitesse)\"}]},{\"@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.4 (Fonctionnalit\u00e9s, D\u00e9pr\u00e9ciations, Vitesse)","description":"PHP 7.4 vient avec de nouvelles fonctionnalit\u00e9s, des d\u00e9pr\u00e9ciations et une am\u00e9lioration des performances. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.4 !","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-4\/","og_locale":"fr_FR","og_type":"article","og_title":"Quoi de neuf dans PHP 7.4 (Fonctionnalit\u00e9s, D\u00e9pr\u00e9ciations, Vitesse)","og_description":"PHP 7.4 vient avec de nouvelles fonctionnalit\u00e9s, des d\u00e9pr\u00e9ciations et une am\u00e9lioration des performances. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.4 !","og_url":"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2019-07-03T11:25:44+00:00","article_modified_time":"2024-09-20T09:06:48+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/11\/FR-Homepage-featured-image.png","type":"image\/png"}],"author":"Carlo Daniele","twitter_card":"summary_large_image","twitter_description":"PHP 7.4 vient avec de nouvelles fonctionnalit\u00e9s, des d\u00e9pr\u00e9ciations et une am\u00e9lioration des performances. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.4 !","twitter_image":"https:\/\/kinsta.com\/wp-content\/uploads\/2019\/06\/php-7.4.jpg","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-4\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/"},"author":{"name":"Carlo Daniele","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63"},"headline":"Quoi de neuf dans PHP 7.4 (Fonctionnalit\u00e9s, D\u00e9pr\u00e9ciations, Vitesse)","datePublished":"2019-07-03T11:25:44+00:00","dateModified":"2024-09-20T09:06:48+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/"},"wordCount":3913,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/php-7-4.jpg","keywords":["php","webdev"],"articleSection":["D\u00e9veloppement WordPress"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/php-7-4\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/","url":"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/","name":"Quoi de neuf dans PHP 7.4 (Fonctionnalit\u00e9s, D\u00e9pr\u00e9ciations, Vitesse)","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/php-7-4.jpg","datePublished":"2019-07-03T11:25:44+00:00","dateModified":"2024-09-20T09:06:48+00:00","description":"PHP 7.4 vient avec de nouvelles fonctionnalit\u00e9s, des d\u00e9pr\u00e9ciations et une am\u00e9lioration des performances. Consultez cette pr\u00e9sentation d\u00e9taill\u00e9e des nouveaut\u00e9s de PHP 7.4 !","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/php-7-4\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/php-7-4.jpg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/07\/php-7-4.jpg","width":1460,"height":730,"caption":"Quoi de neuf dans PHP 7.4"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/php-7-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":"Quoi de neuf dans PHP 7.4 (Fonctionnalit\u00e9s, D\u00e9pr\u00e9ciations, Vitesse)"}]},{"@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\/28340","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=28340"}],"version-history":[{"count":16,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/28340\/revisions"}],"predecessor-version":[{"id":64244,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/28340\/revisions\/64244"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/28340\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/28340\/translations\/it"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/28340\/translations\/nl"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/28340\/translations\/fr"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/28340\/translations\/es"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/28340\/translations\/dk"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/28340\/translations\/jp"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/28340\/translations\/de"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/28340\/translations\/se"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/28340\/translations\/pt"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/28340\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/28368"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=28340"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=28340"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=28340"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}