DEV Community

Cover image for 3 Fonctionnalités cools de PHP 8.0
Mbenga
Mbenga

Posted on

3 Fonctionnalités cools de PHP 8.0

Je veux juste vous montrer quelques fonctionnalités cool de PHP 8.0

Argument nommé

Vous voyez quant vous voulez utiliser une fonction avec de multiple argument optionnels ?

function exampleFunction(
    $param1,
    $param2 = "param2",
    $param3="param3", 
    $param4="param4")
{
    # some actions
}
Enter fullscreen mode Exit fullscreen mode

Si vous voulez appeler cette fonction en laissant les paramètres par défaut, sauf le dernier, vous deviez jusque-là tous les répéter ;

    exampleFunction($param1,"param2","param3","param4-v2");
Enter fullscreen mode Exit fullscreen mode

C'est bien trop long. Mais rassurez-vous, j'ai la solution pour vous. Avec Php 8.0, vous pouvez spécifier quel paramètre vous passé en donnant son nom. Cela permet de se soustraire à la contrainte de l'ordre des paramètres, et d'onc d'éviter de devoir réécrire tous les paramètres optionnels :

    exampleFunction($param1,param4:"param4-v2");
Enter fullscreen mode Exit fullscreen mode

Nullsafe operateur

Cette fois, on va parler d'objets. Is vous voulez accéder à la méthode d'un objet, vous devez vérifier que l'objet en question est bien initialisé. Pour cela vous allez surement écrire quelque chose qui ressemble à :

if(isset($parent) && $parent!= null)
{
    $parent->method();
}
Enter fullscreen mode Exit fullscreen mode

Mais en fait, vous pourriez vous contenter d'écrire :

$parent?->method();
Enter fullscreen mode Exit fullscreen mode

C'est particulièrement utile quand vous voulez accéder à une valeur en enchainant les méthodes.
Par exemple, dans un MVC, si vous voulez accéder à un attribut de l'objet retourné par une méthode fetch d'un modèle, dans votre contrôler, is suffit d'écrire ;

$this?->model??->fetch($id)?->name;
Enter fullscreen mode Exit fullscreen mode

Simplification de l'écriture des classes

Si vous écrivez une classe en PHP, vous devez définir les attributs et leur niveau de confidentialité. Avant, vous deviez les définir en dehors du constructeur. Ce qui veut dire que vous ne pouviez pas définir et initialiser l'attribut en même temps avec une valeur dépendant des paramètres du constructeur.

class Example{
  public float $attribute;
  public function __construct(
    float $attribute,
  ) {
    $this->attribute = $attribute;
  }
}
Enter fullscreen mode Exit fullscreen mode

Avec PHP 8.0, vous pouvez définir les attributs de votre class comme étant les paramètres de votre constructeur :

class Example{
  public function __construct(
    public float $attribute,
  ) {
  }
}
Enter fullscreen mode Exit fullscreen mode

Merci de m'avoir lu

Passez une bonne journée.
Bisous.

Vous pouvez retrouvez la version anglaise de ce post juste ici :

Oldest comments (0)