Новое в Symfony 5.2: Атрибуты аргументов контроллера

PHP 8 будет выпущен через несколько недель и будет включать функцию изменения правил игры, называемую атрибутами (или аннотациями). Symfony 5.2 уже включает атрибуты для определения маршрутов и необходимых зависимостей, но мы продолжили добавлять поддержку атрибутов там, где это имеет смысл.

Вот почему в Symfony 5.2 вы также можете использовать атрибуты PHP для аргументов контроллера. Благодаря этой новой функции ввели атрибут #[CurrentUser] для превращения аргумента контроллера в объект, который представляет текущего пользователя, вошедшего в систему:

// src/Controller/SomeController.php
namespace App\Controller;

use App\Entity\MyUser;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Security\Http\Attribute\CurrentUser;

class SomeController extends AbstractController
{
    public function index(#[CurrentUser] MyUser $user)
    {
        // ...
    }
}

На практике это работает путем добавления нового метода к объекту ArgumentMetadata, передаваемому в преобразователи значений аргументов. Если вы определяете свои собственные преобразователи, теперь вы можете использовать метод getAttribute(), который возвращает атрибут, установленный для аргумента (или значение null, если он не был установлен).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *