PHPVeille technologiqueNouveautés PHP 8
PHP 8 va sortir en alpha pour le 25 juin 2020. Nous pouvons déjà relever quelques nouveautés intéressantes.
Simplification des constructeurs
Les constructeurs sont maintenant simplifiés, plus besoin de définir toutes les variables et de les redéfinir dans le constructeur :
class User
{
public function __construct(public string $name, public string $surname)
{
}
}
En ajoutant le mot clé "public" devant chaque paramètre, la classe va générer les propriétés par elle même, accessible comme d'habitude :
$user = new User('foo', 'bar');
echo($user->name); // Ici, va afficher 'foo'.
Paramètres des fonctions
Dans une fonction, il est maintenant possible de définir plusieurs types pour les paramètres ou les valeurs de retours :
public function getValue(int|float $value) : int|float
{
return $value;
}
Cette fonction, prendra un paramètre soit un integer soit un float et générera une erreur dans le cas contraire.
Les annotations (Attributs)
Si vous avez déjà fait du Symfony, vous devez connaître les annotations, elles ressembles à ça :
/**
* @Route("/blog", name="blog_list")
*/
public function index()
{
// ..
}
Sous PHP 8, cette syntaxe a été remplacé par des #[] (appelés attributs). Le code précedant devrait donc donner :
#[Route("/blog", name:"blog_list")]
public function index()
{
// ..
}
Vérifier qu'une chaîne de caractères en contient une autre
Il est maintenant possible de savoir si une chaîne de caractère en contient une autre grace à la fonction str_contains() :
str_contains('Hello', 'Hello World!'); // Renvoie true
Vérifier qu'une chaîne de caractères commence ou termine par une autre
Deux nouvelles fonctions str_starts_with() et str_ends_with() :
str_starts_with('He', 'Hello World!'); // Renvoie true
str_ends_with('rld!', 'Hello World!'); // Renvoie true
Attention, ces dernières sont sensibles à la casse.