gpt4 book ai didi

service - Symfony Controller 作为服务如何与 __invoke 方法一起工作?

转载 作者:行者123 更新时间:2023-12-02 03:59:10 24 4
gpt4 key购买 nike

例如,在下面的代码中:

/**
* @Route("/patients", service="bundle1.controller.patient.index")
*/
final class IndexController
{
private $router;
private $formFactory;
private $templating;
private $patientFinder;

public function __construct(RouterInterface $router, FormFactoryInterface $formFactory, EngineInterface $templating, PatientFinder $patientFinder)
{
$this->router = $router;
$this->formFactory = $formFactory;
$this->templating = $templating;
$this->patientFinder = $patientFinder;
}

/**
* @Route("", name="patients_index")
*/
public function __invoke(Request $request) : Response
{
$form = $this->formFactory->create(PatientFilterType::class, null, [
'action' => $this->router->generate('patients_index'),
'method' => Request::METHOD_GET,
]);
$form->handleRequest($request);
$patients = $this->patientFinder->matching($form->getData() ?: []);

return $this->templating->renderResponse('patient/index.html.twig', [
'form' => $form->createView(),
'patients' => $patients,
]);
}
}

为什么 __invoke 的路由注释是空的?。这个 Controller 的生命周期是多少?我的意思是,Symfony 何时创建对象以及何时执行类以使用 __invoke

最佳答案

空的@Route注解意味着类的主路由/patients之后没有任何内容。 __invoke 是一个神奇的 PHP 方法,当您将您的类作为函数调用时(不提供任何方法),它会被执行。因此,当您点击路由 /patients 或从任何代码调用您的服务时,__invoke 方法将被执行。

关于service - Symfony Controller 作为服务如何与 __invoke 方法一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42639601/

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