PHP 8.3 est sorti
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++.