PHP 7.1 est disponible !
mer, 07/12/2016 - 11:47
Un an après la sortie de PHP 7.0 arrive PHP 7.1. Une mouture aux performances toujours impressionnantes en comparaison de PHP 5 mais pas beaucoup plus performantes que la mouture 7.0 selon les benchmarks Phoronix. C'est au niveau du langage lui-même que PHP 7.1 fait ses apports.
Arrive notamment un nouveau type de retour : void. Ce type de retour indique en fait qu'une fonction ne doit rien retourner. Une telle fonction peut s'achever sans instruction return :
function should_return_nothing(): void {
return 1; // Fatal error: A void function must not return a value
}
function lacks_return(): void {
// valid
}
function returns_nothing(): void {
return; // valid
}
A remaquer :
function returns_null(): void {
return null; // Fatal error: A void function must not return a value
}
Car null n'est pas une chose vide :-) Null ? Vous avez dit null ? Oui, les types Nullable arrivent avec PHP 7.1
Les types Nullable peuvent être formés à partir de n'importe quel type légal. La possibilité qu'une valeur de retour de fonction soit null doit être indiquée dans la déclaration de la fonction au moyen du signe ? Par exemple :
function answer(): ?int {
return null; //ok
}
function answer(): ?int {
return 42; // ok
}
A remarquer : null ne signifie pas 'n'importe quoi' :-)
function answer(): ?int {
return new stdclass(); // error
}
Un argument de fonction peut également être Nullable :
function say(?string $msg) {
if ($msg) {
echo $msg;
}
}
say('hello'); // ok -- prints hello
say(null); // ok -- does not print
say(); // error -- missing parameter
say(new stdclass); //error -- bad type
Intéressant également parmi d'autres nouveautés (Sans dire que le reste n'est pas intéressant, au contraire :-), la possibilité de capturer d'un coup plusieurs types d'exception.
Avant :
try {
// Some code...
} catch (ExceptionType1 $e) {
// Code to handle the exception
} catch (ExceptionType2 $e) {
// Same code to handle the exception
} catch (Exception $e) {
// ...
}
Avec PHP 7.1 :
try {
// Some code...
} catch (ExceptionType1 | ExceptionType2 $e) {
// Code to handle the exception
} catch (\Exception $e) {
// ...
}
Toutes les nouveautés de PHP 7.1 sont à découvrir dans la note de version.