私はこのような機能を持っています:
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;
});
}
}
use
内で$this
を使用できないため、これは機能しません。コールバック内で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;
});
}
}
あなたはそれを他のものにキャストすることができます:
$a = $this;
$this->config->sessions = array_filter($sessions, function($session) use ($a, $username){
return $a->get_username($session->token) != $username;
});
また、$username
を渡す必要があります。そうしないと、常にtrueになります。