Sobes.tech
Junior

Qu'est-ce que les fonctions fléchées et anonymes en PHP?

sobes.tech IA

Réponse de l'IA

Les fonctions fléchées sont un sucre syntaxique pour les fonctions anonymes, introduites dans PHP 7.4. Elles offrent une manière plus concise d’écrire des fonctions lambda simples.

  • Fonctions anonymes (fermetures):

    • Peuvent inclure plusieurs lignes de code et contenir une logique complexe.
    • Utilisent le mot-clé use pour importer des variables de la portée supérieure.
    • Plus flexibles, adaptées aux tâches complexes.
  • Fonctions fléchées:

    • Contiennent une seule expression, dont le résultat est renvoyé implicitement.
    • Ont un accès automatique aux variables de la portée supérieure (pas besoin de use).
    • Destinées aux opérations simples et en une seule ligne.

Voici des exemples:

<?php
// Fonction anonyme
$greet = function ($name) {
    return "Bonjour, " . $name;
};
echo $greet('Monde') . "\n";

// Fonction anonyme avec use
$message = 'Salutations';
$greetWithMsg = function ($name) use ($message) {
    return $message . ", " . $name;
};
echo $greetWithMsg('Ami') . "\n";
<?php
// Fonction fléchée
$greetArrow = fn ($name) => "Bonjour, " . $name;
echo $greetArrow('Monde') . "\n";

// Fonction fléchée avec accès automatique à la portée supérieure
$messageArrow = 'Salutations';
$greetArrowWithMsg = fn ($name) => $messageArrow . ", " . $name;
echo $greetArrowWithMsg('Ami') . "\n";

Différences dans les restrictions:

Capacité Fonction anonyme Fonction fléchée
Code multilignes Oui Non
Mot-clé return Oui (obligatoire) Non (implicite)
Mot-clé use Oui (pour l'import) Non (automatique)
Logique complexe Oui Non

Le choix entre elles dépend de la complexité de la tâche et des préférences en syntaxe. Pour des actions simples, il est plus pratique d'utiliser des fonctions fléchées en raison de leur concision.