Mes fonctionnalités préférées de PHP 7.4
Tags: php
Published: 2020-08-30 23:05:34

# ✨ PHP 7.4 apporte de vraies nouveautés !

On parle évidemment beaucoup de la version 8 de PHP qui ne devrait plus tarder maintenant. [Mais avant d'étudier les nouveautés qui vont être apportées sur cette future version majeure](https://stitcher.io/blog/new-in-php-8), savez vous quelles sont les nouveautés qui ont été apportées par PHP 7.4 et que vous pouvez utiliser dès aujourd'hui ?

▶ Voici les deux fonctionnalités que je préfère et que j'utilise tous les jours avec mes étudiants !

## Les propriétés typées dans les classes

Auparavant, les propriétés des classes ne pouvaient pas être typées, une propriété publique pouvait donc se voir assigner un type qu'on ne souhaitait pas :
 
```php
<?php

class MaClasse {
  public $age;
}

$obj = new MaClasse();

// Aucune erreur, tout va bien !
$obj->age = "Hello World !"; 
```

Depuis la sorti de PHP 7.4, on peut maintenant typer les propriétés de nos classes afin de s'assurer que jamais on ne pourra y stocker une valeur que l'on ne souhaite pas stocker :
 
```php
<?php

class MaClasse {
  public int $age;
}

$obj = new MaClasse();

// Erreur : tu ne peux pas assigner
// une string à MaClasse::$age qui doit
// être un int !
$obj->age = "Hello World !"; 
```

Ca n'a peut être l'air de rien comme ça mais c'est une vraie révolution dans notre façon d'éviter les bugs et d'avoir une meilleur expérience développeur (DX) 👌

## Les fonctions flèchées

On les connait déjà très bien en Javascript : les fonctions fléchées permettent d'écrire des fonctions anonymes en une seule ligne. Et ce n'est pas qu'une question d'élégance du code, ça va plus loin 😉
 
Un exemple des problèmes qu'on rencontrait avant la 7.4

```php
<?php

$nombres = [1, 2, 3, 4];
$multiplicateur = 2;

// Erreur ! En PHP, on ne peut pas accéder
// à une variable déclarée en dehors d'une
// fonction !
$transformation = array_map(
  function(int $n) {
    return $n * $multiplicateur;
  },
  $nombres
);

// Correct ! Grâce au mot clé "use", on indique
// à PHP que la variable $multiplicateur
// déclarée à l'extérieur de la fonction 
// peut être utilisée dans la fonction !
$transformation = array_map(
  function(int $n) use ($multiplicateur) {
    return $n * $multiplicateur;
  },
  $nombres
);

// résultat
// $transformation => [2, 4, 6, 8]
```

Voyons maintenant ce que nous apporte la nouvelle possibilité d'écrire des fonctions fléchées :

```php
<?php

$nombres = [1, 2, 3, 4];
$multiplicateur = 2;

$transformation = array_map(
  // Non seulement la fonction ne prend plus
  // qu'une seule ligne, mais remarquez :
  // elle connait la variable $multiplicateur
  // sans avoir à lui préciser !
  fn(int $n) => $n * $multiplicateur,
  $nombres
);

// résultat
// $transformation => [2, 4, 6, 8]
```

## En savoir plus sur les changements apportés par PHP 7.4

Si vous souhaitez en savoir plus sur tout ce que PHP 7.4 a apporté, [vous pouvez consulter la documentation officielle de PHP](https://www.php.net/manual/fr/migration74.php), et pourquoi pas se faire tout expliquer sur un plateau par Damien Seguy qui avait abordé l'ensemble des changements au forum PHP de l'AFUP en 2019 🔽🔽🔽

{% youtube fhrC-AspnIk %}

## Retrouvez moi 🚀

* Inscrivez vous à ma newsletter : http://eepurl.com/gZ0LEH
* Rejoignez moi sur YouTube : https://youtube.com/LiorChamla