Nouvelles fonctionnalités
Ajout des générateurs
Le support des générateurs a été ajouté via le mot clé yield. Les générateurs permettent d'implémenter simplement des itérateurs sans le coût ou la complexité de l'implémentation d'une classe implémentant l'interface Iterator.
Un exemple simple qui ré-implémente la fonction range() sous la forme d'un générateur (ou tout du moins, pour les valeurs positives de step) :
<?php
function xrange($start, $limit, $step = 1) {
for ($i = $start; $i <= $limit; $i += $step) {
yield $i;
}
}
echo 'Chiffres impairs simplement : ';
/*
* Notez qu'aucun tableau n'est créé ni retourné,
* ce qui préserve la mémoire.
*/
foreach (xrange(1, 9, 2) as $number) {
echo "$number ";
}
echo "\n";
?>
L'exemple ci-dessus va afficher :
Chiffres impairs simplement : 1 3 5 7 9
Ajout du mot clé finally
Les blocs try-catch supportent désormais un bloc finally pour le code qui devrait être exécuté indépendamment de la levée ou non d'une exception.
Nouvelle API de hachage des mots de passe
Une nouvelle API de hachage des mots de passe existe dorénavant, rendant plus simple la sécurisation des haches et la gestion des mots de passe, en utilisant la même bibliothèque sous-jacente que la fonction crypt(). Voir la documentation sur la fonction password_hash() pour plus de détails.
foreach supporte maintenant list()
La structure de contrôle foreach supporte désormais le découpage de tableaux imbriqués vers des variables distinctes via la structure list(). Par exemple :
<?php
$array = [
[1, 2],
[3, 4],
];
foreach ($array as list($a, $b)) {
echo "A: $a; B: $b\n";
}
?>
L'exemple ci-dessus va afficher :
A: 1; B: 2 A: 3; B: 4
La documentation complète est disponible sur la page du manuel consacrée à foreach.
empty() supporte les expressions arbitraires
Passer une expression arbitraire au lieu d'une variable à empty() est maintenant supporté. Par exemple :
<?php
function always_false() {
return false;
}
if (empty(always_false())) {
echo "Ceci sera affiché.\n";
}
if (empty(true)) {
echo "Ceci ne sera pas affiché.\n";
}
?>
L'exemple ci-dessus va afficher :
Ceci sera affiché.
Déréférencement litéral des array et string
Les valeurs litérales des array et string peuvent maintenant être déréférencées directement pour accéder aux éléments et caractères individuels :
<?php
echo "Déréférencement d'un tableau : ";
echo [1, 2, 3][0];
echo "\n";
echo "Déréférencement d'une chaîne de caractères : ";
echo 'PHP'[0];
echo "\n";
?>
L'exemple ci-dessus va afficher :
Déréférencement d'un tableau : 1 Déréférencement d'une chaîne de caractères : P
Résolution de nom de classe via ::class
Il est possible d'utiliser ClassName::class pour récupérer un nom de classe qualifié complet ClassName. Par exemple :
<?php
namespace Name\Space;
class ClassName {}
echo ClassName::class;
echo "\n";
?>
L'exemple ci-dessus va afficher :
Name\Space\ClassName
Ajout de l'extension OPcache
Le cache opcode Zend Optimiser+ a été ajouté à PHP comme nouvelle extension OPcache. OPcache améliore les performances de PHP en stockant le bytecode précompilé du script en mémoire partagée, faisant ainsi qu'il n'est plus nécessaire pour PHP de charger et d'analyser les scripts à chaque requête. Voir les instructions d'installation pour plus de détails sur l'activation et l'utilisation d'OPcache.
La structure foreach supporte maintenant les clés non-scalaires
La structure foreach supporte maintenant des clés de tout type. Malgré le fait que les clés non-scalaires ne peuvent survenir dans des tableaux PHP natifs, il est possible pour la méthode Iterator::key() de retourner une valeur de n'importe quel type, et ceci est maintenant correctement géré.
Le gestionnaire Apache 2.4 est maintenant supporté sous Windows
Le gestionnaire SAPI Apache 2.4 est maintenant supporté sous Windows.
Amélioration dans GD
Diverses améliorations ont été réalisées dans l'extension GD, incluant :
- Support du retournement en utilisant la nouvelle fonction imageflip().
- Support avancé de la découpe, en utilisant les fonctions imagecrop() & imagecropauto().
- Support de la lecture et de l'écriture du format WebP en utilisant respectivement les fonctions imagecreatefromwebp() & imagewebp().
Version en cache
22/12/2024 18:34:48 Cette version de la page est en cache (à la date du 22/12/2024 18:34:48) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-migration55.new-features.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.