Вышла новая версия Symfony 6.2

Дата публикации: 2022-11-30
Просмотры: 568

Вышла очередная минорная версия Symfony 6.2.
Как и все минорные обновления Symfony поддерживает обратную совместимость.
А это означает, что вы сможете легко обновиться, ничего не меняя в своем коде.

Вышла новая версия Symfony 6.2

Ниже перечислены некоторые изменения для этой версии:

Cache, Security, Template and Doctrine Attributes

В Symfony 6.2 появились аттрибуты позволяющие легко прописывать настройки для кеша, безопасности, шаблонов и Doctrine. Теперь для этого не надо устанавливать SensioFrameworkExtraBundle.

#[Cache(...)]
#[Template(...)]
#[Route(...)]
#[IsGranted(...)]
#[MapEntity(...)]
public function addComment(Request $request): Response
{
    // ...
}

Access Token Authenticator

Symfony 6.2 предоставляет новый Token Authenticator, который упрощает обработку токенов и получение данных из них. Например из таких как JWT. Новый аутентификатор имеет множество настроек.

namespace App\Security;

use App\Repository\SomeTokenRepository;
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
use Symfony\Component\Security\Http\AccessToken\AccessTokenHandlerInterface;

class AccessTokenHandler implements AccessTokenHandlerInterface
{
  public function __construct(
    private readonly SomeTokenRepository $repository,
  ) {
  }

  public function getUserIdentifierFrom(string $token): string
  {
    $accessToken = $this->repository->findOneByValue($token);
    if (null === $accessToken || !$accessToken->isValid()) {
      throw new BadCredentialsException('Invalid credentials.');
    }

    return $accessToken->getUserId();
  }
}

Clock Component

Symfony 6.2 представдляет новый компонент часов для удобства напиасния вашего кода, чувствительного ко времени.

namespace Symfony\Component\Clock;

interface ClockInterface
{
    // returns the current datetime (it's designed to be compatible with PSR-20)
    public function now(): \DateTimeImmutable;

    // advances the clock by the provided number of seconds
    public function sleep(float|int $seconds): void;

    // changes the time zone returned by now()
    public function withTimeZone(\DateTimeZone|string $timezone): static;
}

PSR-4 Route Loader

Symfony 6.2 обновился загрузчик маршрутов PSR-4, который улучшает поиск атрибутов маршрутов, определенных в классах PHP.

# config/routes.yaml
controllers:
    resource:
        path: ../src/Controller/
        namespace: App\Controller
    type: attribute

Notifier and Mailer Integrations

В Symfony 6.2 добавлены интеграции с Infobip, Contact Everyone (Orange Business), SMSFactor, Zendesk и Chatwork.

Improved Enum Support

В Symfony 6.2 добавлена поддержка PHP Enum в параметрах сервисов, файлах YAML и ENV параметрах.

# config/services.yaml
parameters:
    # ...
    app.some_parameter:    !php/enum SomeEnum::Foo
    app.another_parameter: [!php/enum SomeEnum::Foo, !php/enum SomeEnum::Bar]
# src/Enum/AppEnvironment.php
enum AppEnvironment: string {
   case Development = 'dev';
   case Production = 'prod';
   case Staging = 'stage';
   case Testing = 'test';
}
# config/services.yaml
parameters:
    app.some_parameter: '%env(enum:App\Enum\AppEnvironment:APP_ENV)%'

New Uid Features

Symfony 6.2 добавляет поддержку форматов UUID v7 и v8.

use Symfony\Component\Uid\Uuid;

$uuid = Uuid::v7();
// e.g. (string) $uuid = '017f22e2-79b0-7cc3-98c4-dc0c0c07398f'
$uuid = Uuid::v8();
// e.g. (string) $uuid = '216fff40-98d9-81e3-a5e2-0800200c9a66'

Об этих и других улучшениях вы можете почитать по ссылке ниже.
Ссылка на источник: https://symfony.com/blog/symfony-6-2-curated-new-features

Поделиться статьей:

Комментарии (1):

Авторизуйтесь, для того, чтобы оставить комментарий. Войти на сайт
avatar
Григорий Стерин
2022-12-07 01:04
Так же очень порадовало обновление Security в Symfony 6.2
Подписка на новости
Узнавайте о новых статьях первыми.
Профиль