Symfony 4.4.0 вышел через несколько дней. Как и для любого другого второстепенного выпуска Symfony, работает обратная совместимость, и это означает, что вы должны иметь возможность легко обновляться, не внося никаких изменений в код.
Команда Symfony уже писала в блоге о крутых новых фичах релиза 4.4, но вот список наиболее важных изменений (в этой версии 250 новых малых и больших функций):
Новые компоненты
- ErrorHandler предоставляет инструменты для управления ошибками и облегчения отладки кода PHP. Не новый компонент, но приятная новая функция, которая может стать его компонентом в серии 5: Секретное управление
- Добавление secrets: * команды для беспрепятственного использования secrets (Tobion, jderusse, nicolas-grekas)
HttpFoundation
- Добавлен способ анонимизации IP-адресов (Seldaek)
- Улучшение автоопределения формата запроса / ответа (yceruto)
- Предварительная метка времени окончания сеанса (azjezz)
- Deprecated:
HeaderBag::get()
, возвращающий массив, и вместо этого добавленыall($ key)
(Simperfit) - Deprecated: передача аргумента в метод
Request::isMethodSafe()
(dFayet)
Console
- Добавлена поддержка списка определений и горизонтальной таблицы (lyrixx)
- Добавлена поддержка для
NO_COLOR env var
(Seldaek) - Добавлено сообщение об устаревании для не-int
statusCode
(jschaedl) # 33775 - Не пропускайте скрытые консольные команды (m-vo)
- Не перерисовывать progress bar чаще, чем каждые 100 мс по умолчанию (nicolas-grekas)
- Добавлено
Application::reset()
(lyrixx) - Добавьте методы
ProgressBar::protectRedrawFasterThan()
иforceRedrawSlowerThan()
(ostrolucky) - Разрешить обрезку ответа путем добавления флага (Simperfit)
- Deprecated не передача символ тире (-) командам STDIN (yceruto)
Mailer
- Добавлен идентификатор сообщения в
SentMessage
при отправке электронного письма (fabpot) - Добавлена поддержка нескольких почтовиков (fabpot)
- Добавлены ограничения и утверждения
PHPUnit
для Mailer (fabpot) - Добавлена поддержка для профилировщика (fabpot)
- Изменен синтаксис DSN (fabpot)
- Добавлен параметр
ReplyTo
дляPostmarkApiTransport
(pierregaste) - Переименован
SmtpEnvelope
вEnvelope
(xabbuh) - Добавлена проверка на правильность адреса электронной почты перед открытием SMTP-соединения (fabpot)
- Изменена семантика DSN (fabpot)
- Удалена опция DSN режима аутентификации и поддержка в транспорте eSMTP (fabpot)
- Упрощена работа TLS / SSL / STARTTLS (fabpot)
- Добавлен регистратор событий сообщений (fabpot)
- Добавлено имя к транспорту (fabpot)
- Добавлена отладочная информация в
TransportExceptionInterface
(fabpot) - Logger vs debug mailer (fabpot)
- Извлечена transport factory и разрешено создавать нестандартные transports (Koc)
- Добавлена перезапись отправителя и получателя конверта из config (Devristo)
MIME
- Добавлена поддержка S/MIME (sstok)
- Добавлен
Addresss::fromString(gisostallenberg)
- Удален
NamedAddress
(fabpot) - Добавлен
AbstractPart::asDebugString()
(fabpot)
VarDumper
- Добавлено отображение метода, которым мы пользуемся при дампе stack traces (nicolas-grekas)
- Добавлена поддержка для кастинга Ramsey / Uuid (lyrixx)
- Добавлена поддержка Imagine / Image (lyrixx)
- Добавлен вывод и расположение вызовов на
dump()
(ktherage) - Теперь определенное название показавается полностью (pavinthan, nicolas-grekas)
- Теперь можно настраивать метки и флаги
VarDumperTestTrait
(ogizanagi) - Теперь браузеры могут запускать собственный поиск по двойному CMD / CTRL + F (ogizanagi)
- Caster для ответа HttpClient сбрасывает всю информацию (nicolas-grekas)
HttpClient
- Разрешены произвольные значения JSON в запросах (pschultz)
- Добавлена поддержку аутентификации NTLM (nicolas-grekas)
- Разрешена опция
"buffer"
в качестве stream resource (nicolas-grekas) - Добавлено отмененное состояние в
ResponseInterface
(Toflar) - Добавлен метод
$response->cancel()
(nicolas-grekas) - Добавлен метод
HttpClient::createForBaseUri()
(nicolas-grekas) - Попытка использовать php-http / discovery, если nyholm / psr7 не установлен (nicolas-grekas)
- Асинхронный клиент
HTTPlug
(Nyholm) - Разрешено условное включение буферизации с помощью
Closure
(rjwebdev) - Добавлена панель
TraceableHttpClient
иWebProfiler
(jeremyFreeAgent) - Добавлен параметр
"max_duration"
(fancyweb) - Добавлен метод
$response->toStream()
для приведения ответов к обычным потокам PHP (nicolas-grekas) - Добавлен
HttplugClient
для совместимости с библиотеками, которым требуется httplug v1 или v2 (nicolas-grekas) - В
Psr18Client
теперь внедрены соответствующие фабрики PSR-17 (Николя-Грекас)
Messenger
- Добавлен
DoctrineClearEntityManagerWorkerSubscriber
для сброса EM в worker (weaverryan) - Разрешена привязка заголовков типа обмена (CedrickOka)
- Теперь события используются последовательно в worker (Tobion)
- Рабочую логика извлечена в слушатель и удален метод
SendersLocatorInterface::getSenderByAlias
??(Tobion) - Удален транспорт
"sync"
с заменой его на config trick (weaverryan) - Теперь можно настраивать индекс БД для транспорта Redis (chalasr)
- Теперь отображается реальный обработчик, если обработчик упакован (DavidBadura)
- Добавлена поддержка атрибута
from_transport
в тегеmessenger.message_handler
(ruudk) InMemoryTransport
теперь обрабатывает подтвержденные и отклоненные сообщения (tienvx) #- Попытка дать более полезную информацию об источнике при использовании
HandleTrait
(ogizanagi) - Добавлена поддержка автоматической обрезки потоков redis (Toflar)
- Добавлена обработка для отложенного сообщения в транспорт Redis (alexander-schranz)
Cache
- Разрешена URL DSN в адаптерах PDO (jderusse)
- Добавлена поддержку
Redis Sentinel
(StephenClouse) - Добавлен
DeflateMarshaller
- удалено сжатие phpredis (nicolas-grekas) - Добавлен
TagAwareMarshaller
для оптимизации хранения данных при использованииAbstractTagAwareAdapter
(nicolas-grekas) - Улучшена логики и требования недействительности
RedisTagAwareAdapter
(andrerom) - Добавлен префикс
$prefix
кAdapterInterface::clear()
(nicolas-grekas)
Validator
- Добавлено ограничение AutoMapping, чтобы включить или отключить автоматическую проверку (dunglas)
- Объялен устаревшим
CacheInterface
в пользуPSR-6
(derrabus) - Теперь объекты, реализующие
__toString (),
могут использоваться в качествеviolation messages
(mdlutz24) - Добавлено новое
constraint message
, когда есть и min, и max (Lctrs) - Разрешено использовать пути к свойствам для получения
constraints
в ограничении диапазона (Lctrs) - Добавлен параметр
Length::$allowEmptyString
, для отклонения пустых строк (ogizanagi) - Улучшен
TypeValidator
для обработки массива типов (jschaedl) - Добавлено сравниваемое значение пути к
violation parameters
(ogizanagi) - Поддержка
Bootstrap 4
пользовательских переключателей (romaricdrigon)
Form
- Добавлена опция
CountryType
для использования кодов стран alpha3 (creiner) - Извлечения часового пояса (по возможности) по умолчанию из параметра reference_date (yceruto)
- Использование справочной даты для обработки времени во время летнего времени (xabbuh)
- Повторение предпочтительный выбор в списке всех вариантов (Seb33300, xabbuh)
- Объявлен устаревшим int / float для ввода строки в
NumberType
(xabbuh) - Добавлена новая форма
WeekType
(dFayet)
Twig
- Добавлен
NotificationEmail
(fabpot) - Добавлено исключение в виде HTML-комментария в начало и конец
exception_full.html.twig
(ruudk) - Добавлена опция
show-deprecations
к командеlint:twig
(yceruto) - Проверка всех шаблонов из настроенных путей Twig, если аргумент не был предоставлен (yceruto)
- Все классы, расширяющие
twig
, как@final
(fabpot) - Объявлены устаревшими шаблоны ошибок для форматов, отличных от HTML, и начало использования
ErrorHandler
в качестве запасного варианта (yceruto)
DomCrawler
- Добавлены методы
Crawler::match()
,::closest()
,::outerHtml()
(lyrixx) - NormalizeWhitespace должно быть
true
по умолчанию (dunglas) - Добавлен аргумент
normalizeWhitespace
в методtext()
(Simperfit) - Добавлен метод
Form::getName()
(JustBlackBird)
Ldap
- Добавлен security
LdapUser
и провайдер (chalasr) - Добавлены
extraFields
для пользователей (Simperfit) - Добавлено исключение для отображения ошибок
ldap
(Simperfit)
HttpKernel
- Новая страница приветствия при запуске для 4.4 LTS & 5.0 (yceruto)
- ExceptionEvent мог распространять любые выбрасывания (nicolas-grekas)
- Теперь компиляция контейнера обвернута в условно-патрульный замок (Николя-Грекас)
- Файлы, созданные профилировщиком, теперь сжаты (nicolas-grekas)
- Добавить альтернативное соглашение для комплектов каталогов (yceruto)
Serializer
- Добавлена кодировка пустых объектов как объектов, а не массивов (mcfedr)
- Добавлены параметры контекста для обработки спецификации в CSV (malarzm)
- Разрешен многомерный массив объектов в
AbstractObjectNormalizer
(alediator)
WebProfilerBundle
- На вкладку Ajax добавлена кнопка очистки (Matts)
- Тему по умолчанию теперь выбирается на основе пользовательских предпочтений (javiereguiluz)
- Добавлена попытка отобразить наиболее полезную панель по умолчанию (fancyweb)
Security
- Добавлено сравнение ролей, для определения, что пользователи изменились (oleg-andreyev)
- Добавлена поддержка для случайных миграций паролей (nicolas-grekas)
- Добавлен
MigratingPasswordEncoder
(nicolas-grekas) - Добавлена конфигурация энкодера миграции (chalasr)
- Теперь разрешено придерживаться алгоритма хеширования конкретного пароля (chalasr)
- Добавлен
PasswordEncoderInterface::needsRehash()
(nicolas-grekas) - Объявлен устаревшим
isGranted()
/decide()
более чем по одному атрибуту (wouterj) - stateful firewalls сделаны включающими ответы только в случае необходимости (nicolas-grekas)
- Объявлен устаревшим возврат не-логических значений из
checkCredentials()
(derrabus)
Dependecny Injection
- Созданфайл preload.php для PHP 7.4 в папке кеша (nicolas-grekas)
- Разрешена привязку итерируемых и помеченных служб (lyrixx)
- Разрешено сохранение контейнера в один файл вместо множества файлов (nicolas-grekas)
- Объявлен устаревшим тег
!tagged
в пользу!tagged_iterator
(jschaedl) - Добавлена опция
"ignore_errors: not_found"
для импортированных файлов конфигурации (pulzarraider) - Добавлен пропуск компилятора и команда для проверки, что проводка служб соответствует объявлениям типа (alcalyn, GuilhemN, nicolas-grekas)
- Добавлена возможность выбора поведения декораторов для несуществующих декорированных сервисов (mtarld)
- Теперь процессов env (base64: ...) ьудет способен декодировать base64url (nicolas-grekas)
- Добавлен
LazyString
для ленивого вычисления строковых значений, введенных в сервисы (nicolas-grekas) - Включен улучшенный синтаксис для определения вызовов методов в
Yaml
(nicolas-grekas) - REMOTE_ADDR в доверенных прокси теперь заменяется на текущий REMOTE_ADDR (mcfedr)
- Добавлена возможность определения метода приоритета для помеченного сервиса (lyrixx)
FrameworkBundle
- Разрешена настройка обработчика сеанса с DSN (nicolas-grekas)
- Добавлена сортировка сервисов по меткам (krome162504)
- Добавлена ??опция
--sort
дляTranslationUpdateCommand
(k0d3r1s) - Улучшена конфигурация перенаправления при использовании
RedirectController
(yceruto) - Добавлен конфигурационный переводчик
cache_dir
(Raulnet) - Добавлен псевдоним автопроводки для PSR-14 (nicolas-grekas)
default_locale
теперь используется в качестве значения по умолчанию дляtranslationator.fallbacks
(dunglas)- Разрешено создание связанных пулов кэша с помощью нескольких адаптеров (nicolas-grekas)
- Разрешено использовать утверждения
BrowserKit
с тестовым клиентомPanther
иAPI Platform
(dunglas) - Разрешены точки в доменах перевода (jschaedl)
Другое
- [CssSelector] Добавлена поддержка
:only-of-type
(jakzal) - [Yaml] исправление разбора встроенного YAML, охватывающего несколько строк (xabbuh)
- [Yaml] Добавлен флаг для сброса NULL как ~ (OskarStark)
- [Monolog] Добавлен
ElasticsearchLogstashHandler
(lyrixx) - [EventDispatcher] Разрешено опускать имя события при регистрации слушателей (derrabus)
- [EventDispatcher] Пропуск компилятора для событий с псевдонимами пользователя (derrabus)
- [Маршрутизация] Объявлен устаревшим
ServiceRouterLoader
иObjectRouteLoader
в пользуContainerLoader
иObjectLoader
(fancyweb) - [Процесс] Объявлен устаревшим
Process::inheritEnvironmentVariables()
(oginazagi) - [Процесс] Разрешено написание переносимых «подготовленных» командных строк (Simperfit)
- [WebLink] реализация PSR-13 напрямую (nicolas-grekas)
- [Intl] Поддержка ISO 3166-1 альфа-3 кодов стран (terjebraten-certua)
- [Dotenv] Использовать значение по умолчанию, если указанная переменная не установлена ??(j92)
- [Перевод] XliffLintCommand: разрешено расширение файла .xliff (codegain)
- [Перевод] Дамп родных форматов множественного числа в файлы po (Stadly)
- [PhpUnitBridge] заставляет мост действовать как polyfill для новейших функций PHPUnit (nicolas-grekas)
- [ExpressionLanguage] Экспоненциальный формат для числа (tigr1991)
- [WebserverBundle] Пакет объявлен устаревшим в пользу локального сервера Symfony (Simperfit)
- [Config] Введен метод
find
вArrayNodeDefinition
, чтобы упростить манипулирование деревом конфигурации (jschaedl)