Вышла новая версия Symfony 6.2
Вышла очередная минорная версия Symfony 6.2.
Как и все минорные обновления Symfony поддерживает обратную совместимость.
А это означает, что вы сможете легко обновиться, ничего не меняя в своем коде.
Ниже перечислены некоторые изменения для этой версии:
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