Fonctions anonymes : utilité ?

Eléphant du PHP | 314 Messages

30 mars 2011, 09:40

Bonjour,

j'aimerai savoir dans quel contexte une fonction anonyme peut être utile ? Pour ceux qui tomberai sur ce sujet sans savoir ce qu'est une fonction anonyme, c'est plus ou moins cela :
<?php
  $fonctionAno= function($nom){
    printf("Salut%s\r\n", $nom);
  };

  $fonctionAno('World');
  $fonctionAno('PHP');
?>
Merci de vos réponses
Cordialement,
Julien - http://laravel.fr/

Eléphant du PHP | 314 Messages

30 mars 2011, 09:41

En fait j'avais pas beaucoup cherché... une utilité certain est pour les fonctions de callback. Exemple depuis la doc :

<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
    return strtoupper($match[1]);
}, 'bonjour-le-monde');
?>
Exactement ce que j'ai l'habitude de faire en JS avec jQuery en fin de compte...
Cordialement,
Julien - http://laravel.fr/

ViPHP
AB
ViPHP | 5818 Messages

30 mars 2011, 17:31

Oui mais ton explication est un peu ambigüe dans le sens on l'on pourrait tout aussi bien utiliser une fonction "classique" (non anonyme) comme fonction de callback. Comme indiqué dans la doc, c'est surtout pratique pour les fonctions à usage unique afin de ne pas "polluer" ton espace de noms : comme cette fonction n'a pas de nom elle ne risque pas de rentrer en conflit avec une autre fonction ayant le même nom :wink:

Eléphant du PHP | 314 Messages

31 mars 2011, 09:43

Bonjour,

Ce qui me plais avec les fonctions anonyles, c'est simplement de pouvoir utiliser sur place une fonction, sans avoir à la déclarer vraiment. Ainsi je n'est pas à déclarer une fonction qui ne me servira probablement qu'une seule fois !
Cordialement,
Julien - http://laravel.fr/

devlop78
Invité n'ayant pas de compte PHPfrance

10 avr. 2011, 05:13

Bonjour,

Ce qui me plais avec les fonctions anonyles, c'est simplement de pouvoir utiliser sur place une fonction, sans avoir à la déclarer vraiment. Ainsi je n'est pas à déclarer une fonction qui ne me servira probablement qu'une seule fois !

Oui parce que si tu fais
$fonction = function () { }
Alors elle n'est plus vraiment anonyme ^^

Bon ... Trêve de plaisanterie, je vais me coucher moi ...