我想知道如何编写仅在kernel.terminate
.
例如,当我打电话时:
$message = (new \Swift_Message('A new book has been added'))
->setFrom('system@example.com')
->setTo('contact@les-tilleuls.coop')
->setBody(sprintf('The book #%d has been added.', $book->getId()));
$this->mailer->send($message);
我知道内核将向客户端发送响应,并且仅在发送电子邮件之后。
我有很多可以调用的服务,kernel.terminate
但我不知道如何编写它们以便仅在该事件中调用。
现在,我正在订阅者中编写编写代码:
public static function getSubscribedEvents()
{
return [
KernelEvents::TERMINATE => [['doHeavyStuff', EventPriorities::POST_RESPOND]]
];
}
但是以这种方式工作意味着我必须只处理请求和响应,并且我不想依赖响应。
if($method===Request::METHOD_PUT && isset($response['@type']) && $response['@type']==='Partner'){
$this->notificationManager->sendNotificationAboutCart($response['partner']['id'],
$response['partner']['name']);
}
我不知道是否清楚,但是notificationManager
在我的代码中调用我想要的任何地方并且该经理只在kernel.terminate
.