• Главная
  • Новости
  • Статьи
  • Книги
  • Видео
  • Хабы
  • Каналы
  • RU
  • EN
  • 19 May, 25
  • О Проекте
  • Контакты
ДотДев
  • Главная
  • Новости
  • Статьи
  • Книги
  • Видео
  • Хабы
  • Каналы
  1. ДотДев
  2. Статьи
  3. Что нового в Symfony 6.2: Встроенные атрибуты для Cache, Security, Template и Doctrine

Что нового в Symfony 6.2: Встроенные атрибуты для Cache, Security, Template и Doctrine

Symfony * PHP *

Symfony 6.2 будет выпущен в конце ноября 2022. В этой серии статей мы рассмотрим новые возможности в Symfony 6.2.

Аннотации были добавлены в Symfony более 10 лет назад. Они были доступны при использовании дополнительного бандла SensioFrameworkExtraBundle.

С добавлением в PHP атрибутов, эти аннотации были переведены на нативные атрибуты. Но пакет sensio/framework-extra-bundle все еще должен был быть установлен что бы использовать их. Например: 

use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Component\Routing\Annotation\Route;
#[Route('/comment/{postSlug}/new', methods: ['POST'], name: 'comment_new')]
#[IsGranted('IS_AUTHENTICATED_FULLY')]
#[ParamConverter('post', options: ['mapping' => ['postSlug' => 'slug']])]
public function addComment(Request $request, Post $post): Response
{
    // ...
}

В Symfony 6.2, были добавлены #[Cache], #[Template], #[IsGranted] и #[MapEntity] в виде нативных атрибутов, и теперь для их использования больше не нужно устанавливать доп. пакеты в проект. #[IsGranted] заменяет и улучшает аннотацию@Security() и #[MapEntity] заменяет@ParamConverter.

В большинстве приложений вам потребуется изменить только namespace без изменения вашего кода:

-use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
+use Symfony\Component\Security\Http\Attribute\IsGranted;
-use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
+use Symfony\Component\HttpKernel\Attribute\Cache;

Атрибут #[MapEntity] (доступен в DoctrineBundle >= 2.7.1) работает точно так же как #[ParamConverter]: в большинстве случаев вам не нужно использовать это атрибут явно, он работает автоматически.

Однако, если вы ранее использовали #[ParamConverter] с конфигурацией, вам необходимо сделать несколько изменений для использования нового атрибута #[MapEntity]. Так же новый атрибут применяется к свойствам а не всему методу целиком:

-use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
+use Symfony\Bridge\Doctrine\Attribute\MapEntity;
 // ...
-#[ParamConverter('post', options: ['mapping' => ['postSlug' => 'slug']])]
-public function addComment(Request $request, Post $post): Response
+public function addComment(
+    Request $request,
+    #[MapEntity(mapping: ['postSlug' => 'slug'])] Post $post
+): Response
 {
     // ...
 }

Атрибуты в PHP это отличный способ для управления конфигурацией через код. Однако если вы не хотите их использовать вы по прежнему можете описывать конфигурацию через XML/YAML или напрямую в PHP коде.

Тэги
Статьи symfony framework symfony php Программирование Symfony Web программирование на Symfony Symfony 6.2
  • 06 Nov, 22
  • 1 комментарии
  • 955 просмотры
ПОДЕЛИТЬСЯ:

Джо Блэк
Джо Блэк

Автор новостей IT/Tech

Комментарии
  • 1000+
    Подписки
  • 1000+
    Фолловеры
  • 1000+
    Фолловеры
Тэги
  • Python (230)
  • Программирование (181)
  • 2022 (170)
  • 2020 (151)
  • 2023 (149)
  • 2021 (128)
  • Java (128)
  • Linux (119)
  • 2019 (117)
  • Алгоритмы (112)
  • JavaScript (100)
  • Сети (99)
  • Api (92)
  • Инструменты (90)
  • Web (86)
  • Applications (79)
  • Microsoft (73)
  • PHP (73)
  • Google (72)
  • Обучение (72)
  • 2018 (68)
  • SQL (68)
  • C# (66)
  • ИИ (63)
  • Windows (60)
  • HTML (59)
  • 2017 (55)
  • C++ (53)
  • Базы данных (53)
  • Machine Learning (51)
  • Kubernetes (50)
  • Go (47)
  • Бизнес (47)
  • Паттерны (46)
  • CSS (44)
  • Проекты (42)
  • 2016 (41)
  • ИБ (41)
  • ОС (40)
  • .NET (39)
  • DevOps (39)
  • Docker (39)
  • React (39)
  • Проектирование (38)
  • Тестирование (38)
  • Математика (36)
  • Android (35)
  • Структуры Данных (35)
  • Информатика (34)
  • Framework (32)
Программирование
  • Python
  • Go
  • C#
  • Java
  • JavaScript
  • TypeScript
  • PHP
  • Ruby
  • Kotlin
  • Rust
  • C++
  • C
Скилы
  • Обучение
  • Инструменты
  • Истории
  • Data Science
  • Git
  • Тестирование
  • Проектирование
  • Алгоритмы
Софт
  • Linux
  • Windows
  • Android
  • iOS
  • Архитектура и OS
  • Базы данных
  • Backend
  • Frontend
Дизайн
  • UI/UX
  • Дизайн
  • Интерфейсы
  • Графический Дизайн
  • Game Design
Железо
  • Устройства и IoT
  • Компьютеры
  • Гаджеты
Другое
  • Бизнес
  • Стартап
  • Трудоустройство
  • Общее
  • Разное
Контакты
  • Условия использования
  • Политика конфиденциальности
  • О Проекте
  • Контакты

© 2025. ДотДев — Информационный ресурс для IT-специалистов.