2017-06-11 1 views
1

Je fonction comme ceci:

class Service { 
    function delete_user($username) { 
     ... 
     $sessions = $this->config->sessions; 
     $this->config->sessions = array_filter($sessions, function($session) use ($this){ 
      return $this->get_username($session->token) != $username; 
     }); 
    } 
} 

mais cela ne fonctionne pas parce que vous ne pouvez pas utiliser $this l'intérieur use, est-il possible d'exécuter la fonction qui est membre de classe Service dans un rappel? Ou dois-je utiliser la boucle for ou foreach?

Répondre

3

$this est toujours disponible dans les fermetures (non statiques) depuis PHP 5.4, pas besoin de use.

class Service { 
    function delete_user($username) { 
     ... 
     $sessions = $this->config->sessions; 
     $this->config->sessions = array_filter($sessions, function($session) { 
      return $this->get_username($session->token) != $username; 
     }); 
    } 
} 

Voir PHP manual - Anonymous functions- Automatic binding of $this

1

Vous pouvez simplement le jeter à autre chose:

$a = $this; 
$this->config->sessions = array_filter($sessions, function($session) use ($a, $username){ 
    return $a->get_username($session->token) != $username; 
}); 

Vous aurez également besoin de passer par $username sinon il sera toujours vrai.