J'ai une fonction comme celle-ci:
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 car vous ne pouvez pas utiliser $this
inside use
, est-il possible d'exécuter une fonction membre de la classe Service à l'intérieur d'un callback? Ou dois-je utiliser pour ou pour chaque boucle?
$this
est toujours disponible dans les fermetures (non statiques) depuis PHP 5.4, pas besoin de use
it.
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 Manuel PHP - Fonctions anonymes - Liaison automatique de $ this
Vous pouvez simplement le convertir en autre chose:
$a = $this;
$this->config->sessions = array_filter($sessions, function($session) use ($a, $username){
return $a->get_username($session->token) != $username;
});
Vous devrez également passer $username
à travers sinon ce sera toujours vrai.