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)