Новое в Symfony 7.2: Различные улучшения (часть 1)
null
коалесценции в выражениях, настраиваемые атрибуты для паспортов входа пользователей и улучшенная поддержка VarDumper
для PHP 8.4Серия статей Новое в Symfony 7.2
рассказывает об основных новых функциях, появившихся в Symfony 7.2. Эта статья, состоящая из двух частей, последняя в этой серии и рассказывает о различных незначительных изменениях и улучшениях.
Настраиваемая задержка повтора сообщения
- Pull Request: [Messenger] Allow setting retry delay by
RecoverableExceptionInterface
#57915 Valtteri R
При использовании компонента Messenger вы можете выбросить исключение RecoverableMessageHandlingException
для принудительного повтора сообщения неограниченное количество раз. В Symfony 7.2 в конструктор этого исключения можно передать задержку повторной попытки. Это удобно, например, при повторном выполнении HTTP-запроса, содержащего заголовок ответа Retry-After
.
Улучшение поддержки коалесценции в выражениях
- Pull Request: [ExpressionLanguage] Support non-existent names when followed by null coalescing #54757 Adam Kiss
Компонент ExpressionLanguage
поддерживает оператор null
коалесценции (foo ?? 'no'
, foo.baz ?? foo['baz'] ?? 'no'
, и т.д.) Однако, в отличие от эквивалентного оператора PHP, он выбрасывает исключение при попытке доступа к несуществующей переменной.
В Symfony 7.2 мы улучшили эту проблему, и теперь оператор null
коалесценции ведёт себя точно так же, как и оператор PHP.
Передача нестандартных атрибутов в паспорт через login()
- Pull Request: [Security][SecurityBundle] Allow passing attributes to passport via
Security::login()
#58166 Alexandre Daubois
При использовании метода 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
.
Принудительный цвет в выводе консоли
- Pull Request: [Console][PhpUnitBridge][VarDumper] Add support for
FORCE_COLOR
environment variable #57777 Artfaith
В 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 для дампа содержимого объекта. Хотя значение хука не будет показано (чтобы избежать запуска логики внутри него), вы увидите его имя и тип: