Как работает передача сервиса в метод?
Ниже пример рабочего кода, для получения значений, переданных методом 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');
}
}
Ответы (1 шт):
Фреймворк использует свою систему роутинга и маршрутизации, на основе MVC, где в роутах вы указываете контроллер и метод, а фреймворк в свою очередь наполняет Request данными и отправляет его туда, когда вы указали в роутах