PHP 7.1 est disponible !

Par:
fredericmazue

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.