我正在使用 login_link ( docs ) 来验证忘记密码的用户。
按照文档,我自定义了电子邮件并覆盖了 htmlTemplate 但在现实生活中 phpStan 阻止我说:
Call to an undefined method Symfony\Component\Mime\RawMessage::htmlTemplate().
我正在尝试修复它,但我被卡住了 :(
知道吗?
问问题
38 次
1 回答
1
EmailMessage::getMessage()
is的返回类型提示RawMessage
,实际上没有方法htmlTemplate()
。
但是,在这种特殊情况下,您实际上得到了一个NotificationMail
(参见此处的相关代码),它最终继承自该方法,RawMessage
但实现了该htmlTemplate()
方法(或者,更准确地说,它继承自TemplatedEmail
实现了所述方法的该方法)。
有几种方法可以用 phpstan 解决这个问题:
检查是否
$email
实际上是NotificationMail
$email = $emailMessage->getMessage(); if ($email instanceof NotificationMail) { $email->htmlTemplate(...); }
添加一个断言,如果
$email
不是NotificationMail
$email = $emailMessage->getMessage(); assert($email instanceof NotificationMail); $email->htmlTemplate(...);
添加内联
@var
. 请注意,根据 phpstan 文档,不鼓励使用此方法。(感谢@Ondřej Mirtes指出这一点)/** @var NotificationMail $email */ $email = $emailMessage->getMessage();
于 2021-08-26T08:21:08.530 回答