我的功能如下:
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循环?
答案 0 :(得分:15)
$this
始终可用于(非静态)闭包,无需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 manual - Anonymous functions - Automatic binding of $this
答案 1 :(得分:0)
您可以将其转换为其他内容:
$a = $this;
$this->config->sessions = array_filter($sessions, function($session) use ($a, $username){
return $a->get_username($session->token) != $username;
});
您还需要通过$username
,否则它将始终为真。