✨🚀 PHP 8.4 : Découvrez les Principales Nouveautés en Détail 🚀✨

Temps de lecture : 13 minutes environ.

Dans ce tutoriel nous allons explorer en détail les principales nouveautés de PHP 8.4, tout juste publié le 21 novembre 2024. Cette version apporte des fonctionnalités innovantes qui simplifient le développement et renforcent la clarté de vos codes. Voici un guide complet pour vous aider à maîtriser les éléments les plus marquants :

🔐 Visibilité asymétrique : un meilleur contrôle sur vos propriétés

La visibilité asymétrique permet de définir des visibilités différentes pour les getters et setters d’une propriété. Cela offre un contrôle plus précis sur l'accès à vos données.

Exemple avant PHP 8.4 :

class PHPVersion {
private string $version = '8.3';

public function getVersion(): string {
return $this->version;
}
}

$phpVersion = new PHPVersion();
echo $phpVersion->getVersion(); // 8.3

Exemple avec PHP 8.4 :

class PHPVersion {
public private(set) string $version = '8.4';

public function setVersion(string $version): void
{
$this->version = $version;
}
}

$phpVersion = new PHPVersion();

$phpVersion->setVersion('8.4.3');
echo $phpVersion->version; // 8.4.3

Avantage :

Vous n’avez plus besoin de créer manuellement des getters et setters, tout en gardant un contrôle précis sur vos propriétés.

 

⚠️ Attribut #[Deprecated] : simplifiez la gestion des fonctionnalités obsolètes

L’attribut #[Deprecated] permet de signaler qu’une fonction, une méthode, ou une classe est obsolète et indique à l'utilisateur quoi utiliser à la place.

Exemple :

#[Deprecated(
message: "Cette méthode est remplacée par afficherMot()",
since: "2.5"
)]
function afficher(string $mot): void {
echo $mot;
}

function afficherMot(string $mot): void {
echo "Mot : $mot";
}


$exemple = new Exemple();
$exemple->afficher('brouette'); // Avertissement : Cette méthode est remplacée par afficherMot()

Avantage :

Les développeurs peuvent être informés des dépréciations directement dans leur IDE ou leurs outils de CI/CD.

 

📊 Nouveautés des tableaux : simplifiez vos recherches avec array_find et array_find_key

PHP 8.4 introduit des fonctions puissantes pour manipuler les tableaux : array_find, array_find_key, array_any, et array_all.

Exemple avec array_find :

Trouver le premier élément répondant à une condition.

$fruits = ['banane', 'pomme', 'poire', 'kiwi', 'cerise'];

// Trouver le premier fruit commençant par "P"
$choix = array_find($fruits, fn($fruit) => str_starts_with($fruit, 'p'));
echo $choix; // pomme

Exemple avec array_find_key :

Obtenir la clé de l’élément correspondant.

$index = array_find_key($fruits, fn($fruit) => $fruit === 'cerise');
echo $index; // 4

Exemple avec array_any et array_all :

  • array_any : Vérifie si au moins un élément satisfait une condition.
  • array_all : Vérifie si tous les éléments satisfont une condition.
$fruits = ['banane', 'pomme', 'poire', 'kiwi'];

var_dump(array_any($fruits, fn($fruit) => str_starts_with($fruit, 'p'))); // true
var_dump(array_all($fruits, fn($fruit) => strlen($fruit) > 3)); // true

 

Instanciation sans parenthèses pour le mot-clé new

Une nouveauté syntaxique simple mais pratique : il est désormais possible d’appeler des méthodes d’un objet instancié sans ajouter de parenthèses après new.

Exemple :

class Livre {
public function __construct(
public readonly string $titre
) {}
}

echo (new Livre('Les Trois Mousquetaires'))->titre; // Les Trois Mousquetaires

Avec PHP 8.4, vous pouvez omettre les parenthèses si aucun argument n’est requis :

class Livre {
public function __construct(public readonly string $titre = 'Par défaut') {}
}

echo (new Livre)->titre; // Par défaut

 

🛠️ Hooks de propriété : des getters et setters avancés

Les hooks de propriété permettent d’associer directement des actions aux propriétés via des méthodes spéciales get et set.

Exemple avant PHP 8.4 :

class Locale {
private string $languageCode;
private string $countryCode;

public function __construct(string $languageCode, string $countryCode)
{
$this->setLanguageCode($languageCode);
$this->setCountryCode($countryCode);
}

public function getLanguageCode(): string
{
return $this->languageCode;
}

public function setLanguageCode(string $languageCode): void
{
$this->languageCode = strtolower($languageCode);
}

public function getCountryCode(): string
{
return $this->countryCode;
}

public function setCountryCode(string $countryCode): void
{
$this->countryCode = strtoupper($countryCode);
}
}

Exemple avec PHP 8.4 :

class Locale {
public string $languageCode {
get;
set => $this->languageCode = strtolower($value);
}

public string $countryCode {
get;
set => $this->countryCode = strtoupper($value);
}
}

$local = new Locale();
$local->languageCode = 'FR';
$local->countryCode = 'fr';

echo $local->languageCode; // fr
echo $local->countryCode; // FR

Avantage :

Les hooks centralisent la logique liée aux getters et setters, tout en réduisant considérablement la longueur du code.

🏁 Conclusion

PHP 8.4 simplifie la vie des développeurs en introduisant des fonctionnalités intuitives, notamment :

  • Une meilleure gestion des propriétés avec la visibilité asymétrique et les hooks de propriété.
  • Une syntaxe plus concise grâce au mot-clé new sans parenthèses.
  • Des outils puissants pour les tableaux, comme array_find.
  • Une gestion claire des dépréciations avec l’attribut #[Deprecated].

N’hésitez pas à expérimenter ces nouveautés dans vos projets !

Obtenir de l'aide

Pour obtenir de l'aide, vous pouvez accéder au serveur Discord pour une entraide par chat.

✨🚀 PHP 8.4 : Découvrez les Principales Nouveautés en Détail 🚀✨
Article publié le

Catégorie : PHP

Mots-clés : PHP php8 nouveautés

Partager : Partager sur Facebook Partager sur Twitter Partager sur LinkedIn