我正在使用FOSUserBundle。两者有什么区别?

$this->get('fos_user.user_manager');

...和...
$this->getUser();

我发现我在不同的时间使用了以上两种方法,并且一切正常。

我猜第一个是FOS,第二个是默认的,但我想我应该始终使用相同的。

这是我使用的一段代码:
$user = $this->getUser();
if($user) {
    $email = $user->getEmail();
} else {
    $email = "no email";
}

..另一个...
$userManager = $this->get('fos_user.user_manager');
$user = $userManager->findUserBy(array('memberID' => '123'));

...所以我应该对两者使用相同的方法吗?

最佳答案

$this->getUser()只是shortcut

$this->get('security.context')->getToken()->getUser()

因此,这意味着您将根据当前的安全 token 获得用户对象。当您要检索实际的登录用户时,它是完美且容易的。

但是,如果您想吸引其他用户,则fos_user.user_manager是选择,因为$this->getUser()具有轻松找到用户并将实现隐藏在后面的方法。它还提供了创建新用户和更新用户的方法。而且,如果您使用ojit_code检索当前登录的用户并对其进行了修改,则应该使用fos用户管理器来更新它们。看看docs了解更多!

10-08 19:23