écritures fonctions lambda
Bonjour
J'étudie actuellement les fonctions lambdas/closures dans PHP5.3
Je compare les écriture possibles suivantes, quand bien meme le resultat produit est le meme :
(l'usage de echo au lieu de return n'a aucun importance ici)
1re forme :
Code:
1 2 3 4 5 6
|
$title = 'hello';
$sayTitle = function() use($title){
echo $title;
};
$sayTitle(); |
cette fonction lambda a une portée locale a la fonction dans laquelle elle est déclarée.
Elle dépend completement de son cotexte d'appel, de la var locale $title
Elle ne peut pas vivre en dehors du contexte.
Le but est certainement de nommer un traitement en particulier
au lieu de le commenter en amont
A quoi sert le nouveau mot-clé use alors qu'on peut passer la variable en entrée de fonction
de maniere classique ?
2e forme :
Code:
1 2 3 4 5 6
|
$title = 'hello';
$sayTitle = function($title){
echo $title;
};
$sayTitle($title); |
forme classique. Indépendance totale vis a vis du contexte d'appel.
La variable est passée en paramètre. Cette fonction lambda n'a pas grand intéret si ce n'est de nommer un traitement
au lieu de le commenter en amont
3e forme :
Code:
1 2 3 4 5 6 7
|
$title = 'hello';
$sayTitle = function(){
global $title;
echo $title;
};
$sayTitle(); |
usage des globales : mauvaise pratique