{"id":74615,"date":"2023-11-29T08:25:19","date_gmt":"2023-11-29T07:25:19","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=74615&#038;preview=true&#038;preview_id=74615"},"modified":"2023-12-04T12:10:11","modified_gmt":"2023-12-04T11:10:11","slug":"php-8-3","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/","title":{"rendered":"PHP 8.3 : Nouveaut\u00e9s et changements de la derni\u00e8re version"},"content":{"rendered":"<p>PHP 8.3 a \u00e9t\u00e9 publi\u00e9 comme pr\u00e9vu le 23 novembre et contient de nombreuses nouvelles fonctionnalit\u00e9s et am\u00e9liorations depuis le <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-8-2\/\">lancement de PHP 8.2<\/a>. M\u00eame si elle est officiellement consid\u00e9r\u00e9e comme une version mineure, certaines des modifications de la 8.3 peuvent avoir un impact direct sur votre travail avec PHP &#8211; peut-\u00eatre en vous aidant \u00e0 coder plus rapidement et avec moins de bogues.<\/p>\n<p>Nous allons nous plonger dans les changements les plus importants &#8211; et parfois ceux pas si importants &#8211; de cette derni\u00e8re version.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Nouvelles fonctionnalit\u00e9s et am\u00e9liorations de PHP 8.3<\/h2>\n<p>Commen\u00e7ons par explorer les fonctionnalit\u00e9s de PHP 8.3 qui font les gros titres.<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"disc\" selector=\"h3\" count-number=\"-1\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Constantes de classe typ\u00e9es<\/h3>\n<p>La possibilit\u00e9 de d\u00e9clarer des types pour les propri\u00e9t\u00e9s des classes est disponible depuis <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-7-4\/\">PHP 7.4<\/a>. Cependant, malgr\u00e9 les nombreuses am\u00e9liorations apport\u00e9es au typage en PHP au fil des ans, il n&rsquo;a pas \u00e9t\u00e9 \u00e9tendu aux constantes &#8211; jusqu&rsquo;\u00e0 maintenant.<\/p>\n<p>Les constantes de classe &#8211; et cela inclut \u00e9galement les constantes d&rsquo;interface, de trait et d&rsquo;enum &#8211; peuvent \u00eatre typ\u00e9es en PHP 8.3, ce qui rend moins probable que les d\u00e9veloppeurs s&rsquo;\u00e9loignent de l&rsquo;intention derri\u00e8re la d\u00e9claration initiale d&rsquo;une constante.<\/p>\n<p>Voici un exemple basique utilisant une interface :<\/p>\n<pre><code class=\"language-php\">\/\/ Legal:\ninterface ConstTest {\n    \/\/ Declared type and value are both strings\n    const string VERSION = \"PHP 8.3\";\n}\n\n\/\/ Illegal:\ninterface ConstTest {\n    \/\/ Type and value mismatch in this initial declaration\n    const float VERSION = \"PHP 8.3\";\n}<\/code><\/pre>\n<p>La valeur r\u00e9elle de ces <a href=\"https:\/\/wiki.php.net\/rfc\/typed_class_constants\" target=\"_blank\" rel=\"noopener noreferrer\">constantes de classe typ\u00e9es<\/a> est r\u00e9v\u00e9l\u00e9e lorsque vous travaillez dans des classes d\u00e9riv\u00e9es des d\u00e9clarations de base. Alors qu&rsquo;une classe enfant peut fr\u00e9quemment assigner une nouvelle valeur \u00e0 une constante, PHP 8.3 peut vous aider \u00e0 \u00e9viter de changer accidentellement son type de sorte qu&rsquo;il devienne incompatible avec la d\u00e9claration initiale :<\/p>\n<pre><code class=\"language-php\">class ConstTest {\n    const string VERSION = \"PHP 8.2\";\n}\n\nclass MyConstTest extends ConstTest {\n\n    \/\/ Legal:\n    \/\/ It's OK to change the value of VERSION here\n    const string VERSION = \"PHP 8.3\";\n\n    \/\/ Illegal:\n    \/\/ Type must be declared if it was specified in the base class\n    const VERSION = \"PHP 8.3\";\n\n    \/\/ Illegal:\n    \/\/ In this case, we can't change the type declared in the \n    \/\/ base class, even if the new type and its value are compatible.\n    const float VERSION = 8.3;\n}<\/code><\/pre>\n<p>Gardez \u00e0 l&rsquo;esprit que le type assign\u00e9 \u00e0 une constante de classe peut varier lors de la r\u00e9duction de plusieurs types ou de l&rsquo;utilisation d&rsquo;un type compatible :<\/p>\n<pre><code class=\"language-php\">class ConstTest {\n    const string|float VERSION = \"PHP 8.2\";\n}\n\nclass MyConstTest extends ConstTest {\n\n    \/\/ Legal:\n    \/\/ Here, it's OK to narrow the type declaration to string or float\n    const string VERSION = \"PHP 8.3\";\n    const float VERSION = 8.3;\n\n    \/\/ Legal:\n    \/\/ Value could be an int, but it's compatible with float \n    const float VERSION = 8;\n\n    \/\/ Illegal:\n    \/\/ We can't widen the type options here to include int\n    const string|float|int VERSION = 8;\n}<\/code><\/pre>\n<p>Deux types pris en charge pour d&rsquo;autres propri\u00e9t\u00e9s lors de la validation des valeurs de retour &#8211; <code>void<\/code> et <code>never<\/code> &#8211; ne sont pas pris en charge en tant que types de constantes de classe.<\/p>\n<h3>Une nouvelle fonction <code>json_validate()<\/code><\/h3>\n<p>Lorsque vous travaillez avec des donn\u00e9es encod\u00e9es en JSON, il est int\u00e9ressant de savoir si la charge utile est syntaxiquement valide avant d&rsquo;essayer de faire quelque chose avec.<\/p>\n<p>Dans les versions pr\u00e9c\u00e9dentes de PHP, les d\u00e9veloppeurs utilisaient la fonction <code>json_decode()<\/code> et v\u00e9rifiaient les erreurs lorsque cette fonction essayait de transformer les donn\u00e9es JSON en tableaux associatifs ou en objets. La nouvelle fonction <code><a href=\"https:\/\/www.php.net\/manual\/en\/function.json-validate.php\" target=\"_blank\" rel=\"noopener noreferrer\">json_validate()<\/a><\/code> de PHP 8.3 v\u00e9rifie les erreurs sans utiliser toute la m\u00e9moire n\u00e9cessaire pour construire ces tableaux ou structures d&rsquo;objets.<\/p>\n<p>Ainsi, dans le pass\u00e9, vous auriez pu valider une charge utile JSON de la mani\u00e8re suivante :<\/p>\n<pre><code class=\"language-php\">$obj = json_decode($maybeJSON);\n\nif (json_last_error() === JSON_ERROR_NONE) {\n    \/\/ Probably do something with $obj   \n}<\/code><\/pre>\n<p>Si vous n&rsquo;avez pas l&rsquo;intention de faire quelque chose imm\u00e9diatement avec <code>$obj<\/code> dans l&rsquo;exemple ci-dessus, c&rsquo;est beaucoup de ressources utilis\u00e9es juste pour confirmer la validit\u00e9 de la charge utile JSON originale. En PHP 8.3, vous pouvez faire quelque chose comme cela et \u00e9conomiser de la m\u00e9moire :<\/p>\n<pre><code class=\"language-php\">if (json_validate($maybeJSON)) {\n    \/\/ Do something with $maybeJSON   \n}<\/code><\/pre>\n<p><strong>Remarque :<\/strong> il n&rsquo;est pas tr\u00e8s judicieux d&rsquo;utiliser <code>json_validate()<\/code>, puis d&rsquo;ex\u00e9cuter imm\u00e9diatement les donn\u00e9es \u00e0 travers <code>json_decode()<\/code>, en utilisant de toute fa\u00e7on les ressources m\u00e9moire de decode. Il est plus probable que vous utilisiez la nouvelle fonction pour valider le JSON avant de le stocker quelque part ou de le livrer en tant que r\u00e9ponse \u00e0 une requ\u00eate.<\/p>\n<h3>Clonage en profondeur des propri\u00e9t\u00e9s de <code>readonly<\/code><\/h3>\n<p>La possibilit\u00e9 de d\u00e9clarer des propri\u00e9t\u00e9s de classe individuelles comme <code>readonly<\/code> est apparue en <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-8-1\/\">PHP 8.1<\/a>. PHP 8.2 a introduit la possibilit\u00e9 d&rsquo;assigner cet attribut \u00e0 <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-8-2\/#new-readonly-classes\" target=\"_blank\" rel=\"noopener noreferrer\">une classe enti\u00e8re<\/a>. Cependant, de nombreux d\u00e9veloppeurs pensaient que les contraintes impos\u00e9es lorsqu&rsquo;ils travaillaient avec des classes contenant de telles propri\u00e9t\u00e9s entravaient la programmation.<\/p>\n<p>Un RFC pour <a href=\"https:\/\/wiki.php.net\/rfc\/readonly_amendments\" target=\"_blank\" rel=\"noopener noreferrer\">modifier le comportement de <code>readonly<\/code><\/a> a fait deux propositions :<\/p>\n<ol>\n<li>Permettre aux classes qui ne sont pas <code>readonly<\/code> d&rsquo;\u00e9tendre les classes qui le sont<\/li>\n<li>Permettre aux propri\u00e9t\u00e9s <code>readonly<\/code> d&rsquo;\u00eatre r\u00e9initialis\u00e9es lors du clonage<\/li>\n<\/ol>\n<p>C&rsquo;est la seconde proposition qui a \u00e9t\u00e9 int\u00e9gr\u00e9e \u00e0 PHP 8.3. La nouvelle approche permet aux instances d&rsquo;une classe avec des propri\u00e9t\u00e9s <code>readonly<\/code> d&rsquo;\u00eatre r\u00e9initialis\u00e9es dans la m\u00e9thode magique <code>__clone<\/code> (y compris via des fonctions invoqu\u00e9es depuis <code>__clone<\/code>).<\/p>\n<p>Cet exemple de code tir\u00e9 de la RFC montre comment cela fonctionne :<\/p>\n<pre><code class=\"language-php\">class Foo {\n    public function __construct(\n        public readonly DateTime $bar,\n        public readonly DateTime $baz\n    ) {}\n \n    public function __clone() {\n        \/\/ $bar will get a new DateTime when clone is invoked\n        $this-&gt;bar = clone $this-&gt;bar; \n\n        \/\/ And this function will be called\n        $this-&gt;cloneBaz();\n    }\n \n    private function cloneBaz() {\n       \/\/ This is legal when called from within __clone\n        unset($this-&gt;baz); \n    }\n}\n \n$foo = new Foo(new DateTime(), new DateTime());\n$foo2 = clone $foo;<\/code><\/pre>\n<h3>Nouvel attribut <code>#[\\Override]<\/code><\/h3>\n<p>Lors de l&rsquo;impl\u00e9mentation d&rsquo;interfaces en PHP, les programmeurs fournissent des fonctionnalit\u00e9s d\u00e9taill\u00e9es pour les m\u00e9thodes nomm\u00e9es dans ces interfaces. Lors de la cr\u00e9ation d&rsquo;une instance d&rsquo;une classe, les programmeurs peuvent remplacer une m\u00e9thode parent en cr\u00e9ant une version alternative avec le m\u00eame nom et une signature compatible dans l&rsquo;instance enfant.<\/p>\n<p>L&rsquo;un des probl\u00e8mes est que les programmeurs peuvent <em>penser qu&rsquo;<\/em> ils impl\u00e9mentent une m\u00e9thode d&rsquo;interface ou qu&rsquo;ils remplacent une m\u00e9thode parentale alors que ce n&rsquo;est pas le cas. Ils peuvent cr\u00e9er une chose enti\u00e8rement distincte \u00e0 cause d&rsquo;une faute de frappe dans le nom de la m\u00e9thode de la classe enfant ou parce que des m\u00e9thodes ont \u00e9t\u00e9 supprim\u00e9es ou renomm\u00e9es dans le code parent.<\/p>\n<p>PHP 8.3 introduit l&rsquo;attribut <code>#[\\Override]<\/code> pour aider les programmeurs \u00e0 clarifier le fait qu&rsquo;une m\u00e9thode doit avoir une lign\u00e9e dans le code.<\/p>\n<p>Voici un exemple basique :<\/p>\n<pre><code class=\"language-php\">class A {\n    protected function ovrTest(): void {}\n}\n\n\/\/ This will work because ovrTest() \n\/\/ can be found in the parent class\nclass B extends A {\n    #[\\Override]\n    public function ovrTest(): void {}\n}\n\n\/\/ This will fail because ovrBest() \n\/\/ (probably a typo) is not in the parent\nclass C extends A {\n    #[\\Override]\n    public function ovrBest(): void {}\n}<\/code><\/pre>\n<h3>R\u00e9cup\u00e9ration dynamique des constantes de classe et des membres de l&rsquo;Enum<\/h3>\n<p>Contrairement aux autres propri\u00e9t\u00e9s du code PHP, la r\u00e9cup\u00e9ration des constantes de classe et des membres de l&rsquo;Enum avec des noms de variables est un peu compliqu\u00e9e. Avant PHP 8.3, vous pouviez utiliser la fonction <code>constant()<\/code> comme ceci :<\/p>\n<pre><code class=\"language-php\">class MyClass {\n    public const THE_CONST = 9;\n}\n\nenum MyEnum int {\n    case FirstMember = 9;\n    case SecondMember = 9;\n}\n\n$constantName = 'THE_CONST';\n$memberName = 'FirstMember';\n\necho constant('MyClass::' . $constantName);\necho constant('MyEnum::' . $memberName)-&gt;value;<\/code><\/pre>\n<p>Maintenant, en utilisant les m\u00eames d\u00e9finitions de classe et d&rsquo;Enum, vous pouvez obtenir le m\u00eame r\u00e9sultat avec la <a href=\"https:\/\/wiki.php.net\/rfc\/dynamic_class_constant_fetch\" target=\"_blank\" rel=\"noopener noreferrer\">r\u00e9cup\u00e9ration dynamique des constantes<\/a> de PHP 8.3, comme ceci :<\/p>\n<pre><code class=\"language-php\">$constantName = 'THE_CONST';\n$memberName = 'FirstMember';\n\necho MyClass::{$constantName};\necho MyEnum::{$memberName}-&gt;value;<\/code><\/pre>\n<h3>Nouvelle m\u00e9thode <code>getBytesFromString()<\/code><\/h3>\n<p>Avez-vous d\u00e9j\u00e0 voulu g\u00e9n\u00e9rer des cha\u00eenes de caract\u00e8res al\u00e9atoires en utilisant une collection de caract\u00e8res pr\u00e9-approuv\u00e9e ? Vous pouvez maintenant le faire facilement avec la m\u00e9thode <code><a href=\"https:\/\/www.php.net\/manual\/en\/random-randomizer.getbytesfromstring.php\" target=\"_blank\" rel=\"noopener noreferrer\">getBytesFromString()<\/a><\/code> qui a \u00e9t\u00e9 ajout\u00e9e \u00e0 l&rsquo;extension Random de PHP 8.3.<\/p>\n<p>Cette nouvelle m\u00e9thode est simple : vous lui passez une cha\u00eene de caract\u00e8res comme source et vous sp\u00e9cifiez le nombre de caract\u00e8res que vous voulez utiliser. La m\u00e9thode s\u00e9lectionnera alors des octets de la cha\u00eene au hasard jusqu&rsquo;\u00e0 ce qu&rsquo;elle atteigne la longueur sp\u00e9cifi\u00e9e.<\/p>\n<p>Voici un exemple simple :<\/p>\n<pre><code class=\"language-php\">$rando = new Random\\Randomizer();\n$alpha = 'ABCDEFGHJKMNPQRSTVWXYZ';\n\n$rando-&gt;getBytesFromString($alpha, 6); \/\/  \"MBXGWL\"\n$rando-&gt;getBytesFromString($alpha, 6); \/\/  \"LESPMG\"\n$rando-&gt;getBytesFromString($alpha, 6); \/\/  \"NVHWXC\"<\/code><\/pre>\n<p>Il est possible que la longueur demand\u00e9e de la sortie al\u00e9atoire contienne plus d&rsquo;octets que la cha\u00eene d&rsquo;entr\u00e9e :<\/p>\n<pre><code class=\"language-php\">$rando = new Random\\Randomizer();\n$nums = '123456';\n\n$rando-&gt;getBytesFromString($nums, 10); \/\/  \"2526341615\"<\/code><\/pre>\n<p>Avec une cha\u00eene d&rsquo;entr\u00e9e compos\u00e9e de caract\u00e8res uniques, chacun d&rsquo;entre eux a une chance \u00e9gale d&rsquo;\u00eatre s\u00e9lectionn\u00e9 pour le r\u00e9sultat al\u00e9atoire. Cependant, les caract\u00e8res peuvent \u00eatre pond\u00e9r\u00e9s en apparaissant plus souvent que d&rsquo;autres dans la cha\u00eene d&rsquo;entr\u00e9e. Par exemple :<\/p>\n<pre><code class=\"language-php\">$rando = new Random\\Randomizer();\n$weighted = 'AAAAA12345';\n\n$rando-&gt;getBytesFromString($weighted, 5); \/\/  \"1AA53\"\n$rando-&gt;getBytesFromString($weighted, 10); \/\/  \"42A5A1AA3A\"<\/code><\/pre>\n<h3>Nouvelles m\u00e9thodes <code>getFloat()<\/code> et <code>nextFloat()<\/code><\/h3>\n<p>En compl\u00e9ment de l&rsquo;extension Random, PHP 8.3 introduit deux nouvelles m\u00e9thodes pour g\u00e9n\u00e9rer des valeurs flottantes al\u00e9atoires : <code>getFloat()<\/code> et <code>nextFloat()<\/code>.<\/p>\n<p>Voici un exemple :<\/p>\n<pre><code class=\"language-php\">$rando = new Random\\Randomizer();\n\n\/\/ Generate a float value between a minimum \n\/\/  value of 0 and a maximum value of 5\n$rando-&gt;getFloat(0,5); \/\/ 2.3937446906217<\/code><\/pre>\n<p>La m\u00e9thode <code>getFloat()<\/code> accepte \u00e9galement un troisi\u00e8me param\u00e8tre apr\u00e8s les valeurs minimum et maximum. En utilisant un Enum <strong>Random\\IntervalBoundary<\/strong>, il est possible de d\u00e9terminer si les valeurs min et max peuvent \u00eatre renvoy\u00e9es par la fonction.<\/p>\n<p>Voici les r\u00e8gles :<\/p>\n<ul>\n<li>IntervalBoundary::ClosedOpen : la valeur min peut \u00eatre renvoy\u00e9e, mais pas la valeur max<\/li>\n<li>IntervalBoundary::ClosedClosed : les valeurs min et max peuvent \u00eatre renvoy\u00e9es<\/li>\n<li>IntervalBoundary::OpenClosed : min ne peut pas \u00eatre retourn\u00e9, max peut l&rsquo;\u00eatre<\/li>\n<li>IntervalBoundary::OpenOpen : ni min ni max ne peuvent \u00eatre renvoy\u00e9s<\/li>\n<\/ul>\n<p>Lorsque vous utilisez <code>getFloat()<\/code> sans sp\u00e9cifier l&rsquo;Enum comme troisi\u00e8me param\u00e8tre, la valeur par d\u00e9faut est <strong>IntervalBoundary::ClosedOpen<\/strong>.<\/p>\n<p>Un exemple utile fourni par la <a href=\"https:\/\/www.php.net\/manual\/en\/random-randomizer.getfloat.php\" target=\"_blank\" rel=\"noopener noreferrer\">documentation de la nouvelle fonction<\/a> g\u00e9n\u00e8re des coordonn\u00e9es al\u00e9atoires de longitude et de latitude, o\u00f9 les latitudes peuvent inclure -90 et 90, mais o\u00f9 la longitude ne peut pas inclure -180 et 180 (puisqu&rsquo;elles sont identiques) :<\/p>\n<pre><code class=\"language-php\">$rando = new Random\\Randomizer();\n\nprintf(\n    \"Lat: %+.6f Long: %+.6f\",\n    $rando-&gt;getFloat(-90, 90, \\Random\\IntervalBoundary::ClosedClosed),\n\n    \/\/ -180 will not be used \n    $rando-&gt;getFloat(-180, 180, \\Random\\IntervalBoundary::OpenClosed),\n);<\/code><\/pre>\n<p>La nouvelle m\u00e9thode <code>nextFloat()<\/code> revient essentiellement \u00e0 utiliser <code>getFloat()<\/code> pour demander une valeur al\u00e9atoire comprise entre 0 et moins de 1 :<\/p>\n<pre><code class=\"language-php\">$rando = new Random\\Randomizer();\n\n$rando-&gt;nextFloat(); \/\/ 0.3767414902847<\/code><\/pre>\n<h2>Autres changements mineurs dans PHP 8.3<\/h2>\n<p>PHP 8.3 inclut \u00e9galement un certain nombre de nouvelles fonctions et de changements mineurs. Nous les mentionnons ci-dessous avec des liens vers des ressources additionnelles (quand elles sont disponibles) :<\/p>\n<ul>\n<li>Nouvelles m\u00e9thodes pour la classe DOMElement : <a href=\"https:\/\/www.php.net\/manual\/en\/domelement.getattributenames.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>DOMElement::getAttributeNames()<\/code><\/a>, <a href=\"https:\/\/www.php.net\/manual\/en\/domelement.insertadjacentelement.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>DOMElement::insertAdjacentElement()<\/code><\/a>, <a href=\"https:\/\/www.php.net\/manual\/en\/domelement.insertadjacenttext.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>DOMElement::insertAdjacentText()<\/code><\/a>, <a href=\"https:\/\/www.php.net\/manual\/en\/domelement.toggleattribute.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>DOMElement::toggleAttribute()<\/code><\/a>, <a href=\"https:\/\/www.php.net\/manual\/en\/domnode.contains.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>DOMNode::contains()<\/code><\/a>, <a href=\"https:\/\/www.php.net\/manual\/en\/domnode.getrootnode.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>DOMNode::getRootNode()<\/code><\/a>,<a href=\"https:\/\/www.php.net\/manual\/en\/domnode.isequalnode.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code> DOMNode::isEqualNode()<\/code><\/a>dOMNameSpaceNode::contains(), et <a href=\"https:\/\/www.php.net\/manual\/en\/domparentnode.replacechildren.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>MParentNode::replaceChildren()<\/code><\/a>.<\/li>\n<li>Nouvelles m\u00e9thodes pour la classe IntlCalendar : <a href=\"https:\/\/www.php.net\/manual\/en\/intlcalendar.setdate.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>IntlCalendar::setDate()<\/code><\/a>, <a href=\"https:\/\/www.php.net\/manual\/en\/intlcalendar.setdatetime.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>IntlCalendar::setDateTime()<\/code><\/a>, <a href=\"https:\/\/www.php.net\/manual\/en\/intlgregoriancalendar.createfromdate.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>IntlGregorianCalendar::createFromDate()<\/code><\/a>, et <a href=\"https:\/\/www.php.net\/manual\/en\/intlgregoriancalendar.createfromdatetime.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>IntlGregorianCalendar::createFromDateTime()<\/code><\/a>.<\/li>\n<li>Nouvelles fonctions LDAP : ldap_connect_wallet() et ldap_exop_sync().<\/li>\n<li>Nouvelle fonction <a href=\"https:\/\/www.php.net\/manual\/en\/function.mb-str-pad.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>mb_str_pad()<\/code><\/a> fonction de cha\u00eene de caract\u00e8res multi-octets.<\/li>\n<li>Nouvelles fonctions POSIX : <a href=\"https:\/\/www.php.net\/manual\/en\/function.posix-sysconf.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>posix_sysconf()<\/code><\/a>, <a href=\"https:\/\/www.php.net\/manual\/en\/function.posix-pathconf.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>posix_pathconf()<\/code><\/a>, <a href=\"https:\/\/www.php.net\/manual\/en\/function.posix-fpathconf.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>posix_fpathconf()<\/code><\/a>, et <a href=\"https:\/\/www.php.net\/manual\/en\/function.posix-eaccess.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>posix_eaccess()<\/code><\/a>.<\/li>\n<li>Nouvelle <a href=\"https:\/\/www.php.net\/manual\/en\/reflectionmethod.createfrommethodname.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>ReflectionMethod::createFromMethodName()<\/code><\/a> m\u00e9thode.<\/li>\n<li>Nouvelle fonction de prise : <a href=\"https:\/\/www.php.net\/manual\/en\/function.socket-atmark.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>socket_atmark()<\/code><\/a>.<\/li>\n<li>Nouvelles fonctions de cha\u00eene de caract\u00e8res : <a href=\"https:\/\/www.php.net\/manual\/en\/function.str-increment.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>str_increment()<\/code><\/a>, <a href=\"https:\/\/www.php.net\/manual\/en\/function.str-decrement.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>str_decrement()<\/code><\/a>, et<a href=\"https:\/\/www.php.net\/manual\/en\/function.stream-context-set-options.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code> stream_context_set_options()<\/code><\/a>.<\/li>\n<li>Nouvelle m\u00e9thode de la classe ZipArchive : <a href=\"https:\/\/www.php.net\/manual\/en\/ziparchive.getarchiveflag.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>ZipArchive::getArchiveFlag()<\/code><\/a>.<\/li>\n<li>Nouveau param\u00e8tre INI pour d\u00e9finir la taille maximale autoris\u00e9e de la pile : <a href=\"https:\/\/www.php.net\/manual\/en\/migration83.other-changes.php#migration83.other-changes.ini\" target=\"_blank\" rel=\"noopener noreferrer\"><code>zend.max_allowed_stack_size<\/code><\/a>.<\/li>\n<\/ul>\n<h2>D\u00e9pr\u00e9ciations dans PHP 8.3<\/h2>\n<p>Avec chaque nouvelle version de PHP, certaines fonctions et param\u00e8tres sont marqu\u00e9s pour une \u00e9ventuelle suppression. Une fois d\u00e9pr\u00e9ci\u00e9es, ces fonctions ne sont pas recommand\u00e9es pour une utilisation continue et g\u00e9n\u00e8rent des notifications dans de nombreux journaux lorsqu&rsquo;elles apparaissent dans le code d&rsquo;ex\u00e9cution.<\/p>\n<p>Voici une liste des d\u00e9pr\u00e9ciations en PHP 8.3, avec des liens vers des informations compl\u00e9mentaires :<\/p>\n<ul>\n<li>La constante U_MULTIPLE_DECIMAL_SEPERATORS est obsol\u00e8te en faveur de U_MULTIPLE_DECIMAL_SEPARATORS.<\/li>\n<li>La variante <a href=\"https:\/\/www.php.net\/manual\/en\/random.constants.php#constant.mt-rand-php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>3MT_RAND_PHP<\/code><\/a> Mt19937 est obsol\u00e8te.<\/li>\n<li><a href=\"https:\/\/www.php.net\/manual\/en\/reflectionclass.getstaticproperties.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>ReflectionClass::getStaticProperties()<\/code><\/a> n&rsquo;est plus nullable.<\/li>\n<li>Les param\u00e8tres INI <a href=\"https:\/\/www.php.net\/manual\/en\/info.configuration.php#ini.assert.active\" target=\"_blank\" rel=\"noopener noreferrer\"><code>assert.active<\/code><\/a>, <a href=\"https:\/\/www.php.net\/manual\/en\/info.configuration.php#ini.assert.bail\" target=\"_blank\" rel=\"noopener noreferrer\"><code>assert.bail<\/code><\/a>, <a href=\"https:\/\/www.php.net\/manual\/en\/info.configuration.php#ini.assert.callback\" target=\"_blank\" rel=\"noopener noreferrer\"><code>assert.callback<\/code><\/a>, <a href=\"https:\/\/www.php.net\/manual\/en\/info.configuration.php#ini.assert.exception\" target=\"_blank\" rel=\"noopener noreferrer\"><code>assert.exception<\/code><\/a>, et <a href=\"https:\/\/www.php.net\/manual\/en\/info.configuration.php#ini.assert.warning\" target=\"_blank\" rel=\"noopener noreferrer\"><code>assert.warning<\/code><\/a> sont obsol\u00e8tes.<\/li>\n<li>L&rsquo;appel \u00e0 <a href=\"https:\/\/www.php.net\/manual\/en\/function.get-class.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>get_class()<\/code><\/a> et <a href=\"https:\/\/www.php.net\/manual\/en\/function.get-parent-class.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code>get_parent_class()<\/code><\/a> sans arguments ont \u00e9t\u00e9 d\u00e9pr\u00e9ci\u00e9s.<\/li>\n<\/ul>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Nous avons examin\u00e9 les changements significatifs apport\u00e9s \u00e0 PHP 8.3. Pour une liste granulaire de toutes les mises \u00e0 jour de cette version, vous pouvez consulter le <a href=\"https:\/\/www.php.net\/ChangeLog-8.php#PHP_8_3\" target=\"_blank\" rel=\"noopener noreferrer\">journal des modifications officiel<\/a> de la version. Si vous pr\u00e9voyez de d\u00e9placer votre code vers une plateforme utilisant la derni\u00e8re version de PHP, le <a href=\"https:\/\/www.php.net\/manual\/en\/migration83.php\" target=\"_blank\" rel=\"noopener noreferrer\">guide de migration 8.2-to-8.3<\/a> peut vous aider \u00e0 \u00e9viter les probl\u00e8mes.<\/p>\n<p>Si c&rsquo;est votre r\u00f4le d&rsquo;installer PHP sur vos serveurs de d\u00e9veloppement ou de production, la version 8.3 est <a href=\"https:\/\/www.php.net\/downloads.php\" target=\"_blank\" rel=\"noopener noreferrer\">pr\u00eate \u00e0 \u00eatre t\u00e9l\u00e9charg\u00e9e<\/a>.<\/p>\n<p>Si vous \u00eates un client de Kinsta, vous pouvez compter sur nous pour rendre cette version disponible sur les serveurs de vos projets d&rsquo;h\u00e9bergement <a href=\"https:\/\/kinsta.com\/fr\/hebergement-wordpress\/\">WordPress<\/a> ou d&rsquo;<a href=\"https:\/\/sevalla.com\/application-hosting\/\">h\u00e9bergement d&rsquo;applications<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PHP 8.3 a \u00e9t\u00e9 publi\u00e9 comme pr\u00e9vu le 23 novembre et contient de nombreuses nouvelles fonctionnalit\u00e9s et am\u00e9liorations depuis le lancement de PHP 8.2. M\u00eame si &#8230;<\/p>\n","protected":false},"author":259,"featured_media":74616,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1000],"class_list":["post-74615","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-mises-a-jour-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PHP 8.3 : Nouveaut\u00e9s et changements de la derni\u00e8re version<\/title>\n<meta name=\"description\" content=\"PHP 8.3 a \u00e9t\u00e9 livr\u00e9 et nous examinons de pr\u00e8s certaines des nouvelles fonctionnalit\u00e9s et mises \u00e0 jour importantes de cette version.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP 8.3 : Nouveaut\u00e9s et changements de la derni\u00e8re version\" \/>\n<meta property=\"og:description\" content=\"PHP 8.3 a \u00e9t\u00e9 livr\u00e9 et nous examinons de pr\u00e8s certaines des nouvelles fonctionnalit\u00e9s et mises \u00e0 jour importantes de cette version.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/php-8-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=\"2023-11-29T07:25:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-04T11:10:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/11\/whats-new-in-php-83.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Steve Bonisteel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"PHP 8.3 a \u00e9t\u00e9 livr\u00e9 et nous examinons de pr\u00e8s certaines des nouvelles fonctionnalit\u00e9s et mises \u00e0 jour importantes de cette version.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/11\/whats-new-in-php-83.png\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"PHP 8.3 : Nouveaut\u00e9s et changements de la derni\u00e8re version\",\"datePublished\":\"2023-11-29T07:25:19+00:00\",\"dateModified\":\"2023-12-04T11:10:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/\"},\"wordCount\":1764,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/11\/whats-new-in-php-83.png\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/\",\"name\":\"PHP 8.3 : Nouveaut\u00e9s et changements de la derni\u00e8re version\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/11\/whats-new-in-php-83.png\",\"datePublished\":\"2023-11-29T07:25:19+00:00\",\"dateModified\":\"2023-12-04T11:10:11+00:00\",\"description\":\"PHP 8.3 a \u00e9t\u00e9 livr\u00e9 et nous examinons de pr\u00e8s certaines des nouvelles fonctionnalit\u00e9s et mises \u00e0 jour importantes de cette version.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/11\/whats-new-in-php-83.png\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/11\/whats-new-in-php-83.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/php-8-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\":\"PHP 8.3 : Nouveaut\u00e9s et changements de la derni\u00e8re version\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"caption\":\"Steve Bonisteel\"},\"description\":\"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PHP 8.3 : Nouveaut\u00e9s et changements de la derni\u00e8re version","description":"PHP 8.3 a \u00e9t\u00e9 livr\u00e9 et nous examinons de pr\u00e8s certaines des nouvelles fonctionnalit\u00e9s et mises \u00e0 jour importantes de cette version.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/","og_locale":"fr_FR","og_type":"article","og_title":"PHP 8.3 : Nouveaut\u00e9s et changements de la derni\u00e8re version","og_description":"PHP 8.3 a \u00e9t\u00e9 livr\u00e9 et nous examinons de pr\u00e8s certaines des nouvelles fonctionnalit\u00e9s et mises \u00e0 jour importantes de cette version.","og_url":"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-11-29T07:25:19+00:00","article_modified_time":"2023-12-04T11:10:11+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/11\/whats-new-in-php-83.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"PHP 8.3 a \u00e9t\u00e9 livr\u00e9 et nous examinons de pr\u00e8s certaines des nouvelles fonctionnalit\u00e9s et mises \u00e0 jour importantes de cette version.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/11\/whats-new-in-php-83.png","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Steve Bonisteel","Dur\u00e9e de lecture estim\u00e9e":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"PHP 8.3 : Nouveaut\u00e9s et changements de la derni\u00e8re version","datePublished":"2023-11-29T07:25:19+00:00","dateModified":"2023-12-04T11:10:11+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/"},"wordCount":1764,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/11\/whats-new-in-php-83.png","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/php-8-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/","url":"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/","name":"PHP 8.3 : Nouveaut\u00e9s et changements de la derni\u00e8re version","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/11\/whats-new-in-php-83.png","datePublished":"2023-11-29T07:25:19+00:00","dateModified":"2023-12-04T11:10:11+00:00","description":"PHP 8.3 a \u00e9t\u00e9 livr\u00e9 et nous examinons de pr\u00e8s certaines des nouvelles fonctionnalit\u00e9s et mises \u00e0 jour importantes de cette version.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/php-8-3\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-3\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/11\/whats-new-in-php-83.png","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/11\/whats-new-in-php-83.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/php-8-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":"PHP 8.3 : Nouveaut\u00e9s et changements de la derni\u00e8re version"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","caption":"Steve Bonisteel"},"description":"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.","url":"https:\/\/kinsta.com\/fr\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/74615","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=74615"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/74615\/revisions"}],"predecessor-version":[{"id":74736,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/74615\/revisions\/74736"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74615\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74615\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74615\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74615\/translations\/fr"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74615\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74615\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74615\/translations\/es"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74615\/translations\/de"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74615\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/74616"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=74615"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=74615"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=74615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}