Как работает передача сервиса в метод?
Ниже пример рабочего кода, для получения значений, переданных методом POST.
Тут 2 варианта - Request::createFromGlobals()
и index1(Request $request): Response
.
В Request::createFromGlobals()
я вижу явный вызов статического метода.
А в index1(Request $request): Response
я вижу передачу объекта в метод, но я не вижу вызова метода с аргументом. Например $index1_instance=new index1('объект Request');
Мы просто создали метод с аргументом. Ничего явно туда не передали, но внутри работаем так, как будто передали объект типа Request.
Говорят, это называется передача сервиса в метод. Как это работает? Где и что вызывает метод?
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request; // Пространство имен для получения данных методами GET и POST.
class TestController extends AbstractController
{
#[Route('/test', name: 'home_page')]
public function index(): Response
{
// Получаем ссылку на объект запроса/метода GET/POST/PUT/DELETE.
$request = Request::createFromGlobals();
// Пример получения данных с именем post_data, переданных методом POST.
$postData = $request->request->get('post_data');
}
// Получаем $request из сервиса.
#[Route('/test1', name: 'home_page')]
public function index1(Request $request): Response
{
// Пример получения данных с именем post_data, переданных методом POST.
$postData = $request->request->get('post_data');
}
}