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 ";
}
?>
L'exemple ci-dessus va afficher :
Chiffres impairs simplement : 1 3 5 7 9
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.
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.
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é.';
}
if (empty(true)) {
echo 'Ceci ne sera pas affiché.';
}
?>
L'exemple ci-dessus va afficher :
Ceci sera affiché.
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
Une nouvelle API de hachage de mot de passe, rendant plus simple la sécurisation du hachage et de la gestion des mots de passe, en utilisant une bibliothèque sous-jacente identique à celle utilisée par la fonction crypt(), a été ajoutée à PHP. Voir la documentation de la fonction password_hash() pour plus de détails.
Le gestionnaire SAPI Apache 2.4 est maintenant supporté sous Windows.