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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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();
usage des globales : mauvaise pratique