PHP 8.3 est sorti

Par:
fredericmazue

lun, 27/11/2023 - 17:52

Conformément à sa feuille de route, le projet PHP a anoncé la disponibilité de PHP 8.3 le 23 novembre dernier. Il s'agit d'une version majeure qui apporte, en plus des classiques améliorations de performances et corrections de bugs, un lot conséquent de nouveautés. Nous vous en présentons ici 2, choisie tout à fait subjectivement : les constantes de classes typées et la nouvelle fonction json_validate.

Les constantes de classes typées

Avant PHP 8.3, nous avions ceci :

interface I {
// We may naively assume that the PHP constant is always a string.
const PHP = 'PHP 8.2';
}

class Foo implements I {
// But implementing classes may define it as an array.
const PHP = [];
}

Dans cet échantillon de code, une implémentation d'une interface redéfinit le type d'une constante de classe. Avec PHP 8.3, ceci peut être rendu impossible en déclarant explicitement le type des constantes de classe, ce qui assainit notablement le code

interface I {
const string PHP = 'PHP 8.3';
}

class Foo implements I {
const string PHP = [];
}

// Fatal error: Cannot use array as value for class constant
// Foo::PHP of type string

json_validate

Cette fonction permet de vérifier qu'une chaîne de caractère est du code JSON valide syntaxiquement. Avant PHP 8.3, nous pouvions procéder ainsi :

function json_validate(string $string): bool {
json_decode($string);

return json_last_error() === JSON_ERROR_NONE;
}

var_dump(json_validate('{ "test": { "foo": "bar" } }')); // true

 

Ce qui, objectivement, est inélégant. Avec PHP 8.3, la même validation JSON est directe :

var_dump(json_validate('{ "test": { "foo": "bar" } }')); // true

Retrouvez la liste complète des nouveautés de PHP 8.3 dans sa note de version.

Commentaires

Tout ce qui faisait l'efficacité de PHP a disparu avec la version 8 : autant faire du C++.