gpt4 book ai didi

symfony - 获取用户而不是用户界面

转载 作者:行者123 更新时间:2023-12-04 10:28:05 25 4
gpt4 key购买 nike

当我这样做时如何获取用户类而不是用户界面:

$this->安全->getUser()(安全是 Symfony\Component\Security\Core\Security;)

通过示例(这只是一个示例 :),我有这个自定义函数:

public function getUser(User $user){
}

当我这样做时:

public function __construct(
Security $security,
) {
$this->security = $security;
}

getUser($this->security->getUser());

我有一个警告:

getUser expects App\Entity\User, Symfony\Component\Security\Core\User\UserInterface|null given.

最佳答案

当像 phpstan 或 psalm 这样的代码分析工具警告您类型不匹配时,有多种方法可以处理它。

您很可能想更改您的方法签名,然后处理消息提示的情况,例如像这样:

public function getUser(UserInterface $user = null)
{
if (null === $user || ! $user instanceof User) {
// do something about the wrong types, that you might get from getSecurity()->getUser(), e.g. return or throw an exception
throw Exception(sprintf('Expected App\\Entity\\User, got %s', $user === null ? 'null' : get_class($user)));
}

... your logic
}

现在你的方法接受可能进入那里的接口(interface)和空值。您还可以在调用 getUser 方法之前进行错误处理并将其保留原样,因此不仅仅是 getUser($this->security->getUser());:

$temporaryUser = $this->security->getUser();

if (!$temporaryUser instanceof User) {
throw Exception(sprintf('Expected App\\Entity\\User, got %s', $user === null ? 'null' : get_class($user)));
}

getUser($temporaryUser);

如果您确定代码不会遇到问题,您还可以通过在项目根目录中创建一个 phpstan.neon 来忽略某些错误消息。请参阅:https://github.com/phpstan/phpstan#ignore-error-messages-with-regular-expressions

关于symfony - 获取用户而不是用户界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60550138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com