Vse o WEB
Информация и размышления о Web технологиях

Все нововведения в Symfony 4.4

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)
Наверх