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 :
cette fonction lambda a une portée locale a la fonction dans laquelle elle est déclarée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $title = 'hello'; $sayTitle = function() use($title){ echo $title; }; $sayTitle();
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 :
forme classique. Indépendance totale vis a vis du contexte d'appel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $title = 'hello'; $sayTitle = function($title){ echo $title; }; $sayTitle($title);
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 :
usage des globales : mauvaise pratique
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $title = 'hello'; $sayTitle = function(){ global $title; echo $title; }; $sayTitle();
Partager