У меня есть такая функция:
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;
});
}
}
но это не работает, потому что вы не можете использовать $this
внутри use
Можно ли выполнить функцию, которая является членом класса Service внутри обратного вызова? Или мне нужно использовать цикл for или foreach?
$this
всегда доступен в (нестатических) замыканиях начиная с PHP 5.4, нет необходимости 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;
});
}
}
Увидеть Руководство по PHP — Анонимные функции — Автоматическое связывание $ this
Вы можете просто привести его к чему-то другому:
$a = $this;
$this->config->sessions = array_filter($sessions, function($session) use ($a, $username){
return $a->get_username($session->token) != $username;
});
Вам также нужно будет пройти $username
иначе это всегда будет правдой.