Новое в Symfony 7.2: Различные улучшения (часть 1)

Источник: «New in Symfony 7.2: Misc. Improvements (Part 1)»
В Symfony 7.2 появились такие возможности, как настраиваемые задержки повторных попыток для Messenger, улучшенная поддержка null коалесценции в выражениях, настраиваемые атрибуты для паспортов входа пользователей и улучшенная поддержка VarDumper для PHP 8.4

Серия статей Новое в Symfony 7.2 рассказывает об основных новых функциях, появившихся в Symfony 7.2. Эта статья, состоящая из двух частей, последняя в этой серии и рассказывает о различных незначительных изменениях и улучшениях.

Настраиваемая задержка повтора сообщения

При использовании компонента Messenger вы можете выбросить исключение RecoverableMessageHandlingException для принудительного повтора сообщения неограниченное количество раз. В Symfony 7.2 в конструктор этого исключения можно передать задержку повторной попытки. Это удобно, например, при повторном выполнении HTTP-запроса, содержащего заголовок ответа Retry-After.

Улучшение поддержки коалесценции в выражениях

Компонент ExpressionLanguage поддерживает оператор null коалесценции (foo ?? 'no', foo.baz ?? foo['baz'] ?? 'no', и т.д.) Однако, в отличие от эквивалентного оператора PHP, он выбрасывает исключение при попытке доступа к несуществующей переменной.

В Symfony 7.2 мы улучшили эту проблему, и теперь оператор null коалесценции ведёт себя точно так же, как и оператор PHP.

Передача нестандартных атрибутов в паспорт через login()

При использовании метода login() для программного входа пользователей в систему можно передавать различные параметры:

use Symfony\Bundle\SecurityBundle\Security;
// ...

class SomeController
{
public function someAction(Security $security): Response
{
// ...

// вход пользователя в систему в текущем файерволе
$security->login($user);

// вход в систему через другой файервол...
$security->login($user, 'form_login', 'other_firewall');

// добавление бейджей...
$security->login($user, 'form_login', 'other_firewall', [(new RememberMeBadge())->enable()]);

// ...
}
}

В Symfony 7.2 также можно определить свои атрибуты для передачи в паспорт:

// атрибуты будут добавлены в паспорт пользователя
$security->login($user, attributes: ['referer' => 'https://oauth.example.com']);

Добавлена опция calendar в DateType

В PHP класс IntlCalendar позволяет вам выбирать любой из календарей, определённых в библиотеке ICU, а также определять собственные настройки календаря. В Symfony 7.2 мы улучшили поле формы DateType, чтобы позволить передавать собственный календарь с новой опцией calendar.

Принудительный цвет в выводе консоли

В Symfony 4.4 мы добавили поддержку переменной env NO_COLOR, позволяющей отключить цвет вывода консоли стандартным для отрасли способом. В Symfony 7.2 мы добавляем поддержку противоположного env-варианта под названием FORCE_COLOR.

Задайте этой переменной env непустое значение, и такие компоненты, как Console, PhpUnitBridge и VarDumper, будут выводить цветное содержимое.

Поддержка виртуальных свойств в VarDumper

Одной из основных новых возможностей PHP 8.4 стали хуки свойств, позволяющие свойствам класса определять дополнительную логику, связанную с их операциями get и set:

class VirtualHookedClass
{
public string $firstName = 'John';
private string $lastName = 'Doe';

public string $fullName {
get {
return $this->firstName.' '.$this->lastName;
}
}

private $untypedFullName {
get {
return $this->firstName.' '.$this->lastName;
}
}
}

В Symfony 7.2 мы добавили поддержку хуков свойств при использовании компонента VarDumper для дампа содержимого объекта. Хотя значение хука не будет показано (чтобы избежать запуска логики внутри него), вы увидите его имя и тип:

VarDumper в Symfony 7.2 поддерживает хуки свойств в PHP 8.4
VarDumper в Symfony 7.2 поддерживает хуки свойств в PHP 8.4

Комментарии


Дополнительные материалы

Предыдущая Статья

Конфигурационный файл SSH

Следующая Статья

Новое в Symfony 7.2: Различные улучшения (часть 2)