33 votes

Comment accéder à l'objet parent depuis les fonctions lambda?

J'ai un récursif de la fonction lambda dans un de mes objets, et il a besoin d'accéder à l'objet mysqli connexion. Cette tentative

$recfunc = function($id, $name) use($this) {

Produit déraisonnable erreur fatale

Erreur fatale: Impossible d'utiliser $this comme variable lexicale dans C:\Users\Codemonkey1991\Desktop\workspace\melior\objects\databasemanager.php sur la ligne 88

Quelqu'un pourrait-il me donner quelques conseils?


Edit: Juste pour préciser le contexte, je suis en train de créer cette fonction lambda intérieur d'une autre fonction.

50voto

Long Ears Points 3081

Comme les fermetures sont elles-mêmes des objets, vous devez affecter $this à une variable locale, telle que:

 $host = $this;
$recfunc = function($id, $name) use ($host) { ...
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X