A Week of Symfony #892 (29 January - 4 February 2024)


This week, Symfony 5.4.35, 6.3.12, 6.4.3 and 7.0.3 maintenance versions were released. The 6.3.12 version is the last one in that branch, so you should consider upgrading to Symfony 6.4 or higher soon. Meanwhile, the development activity was very intense and focused on adding new features to the upcoming Symfony 7.1 version, including a new TypeInfo component. Finally, we published a blog post about our experience upgrading websites to AssetMapper.

Symfony development highlights

This week, 85 pull requests were merged (73 in code and 12 in docs) and 54 issues were closed (51 in code and 3 in docs). Excluding merges, 47 authors made code additions and deletions. See details for code and docs.

5.4 changelog:

  • af9fa66: [Serializer] rewrite AbstractObjectNormalizer::createChildContext() to use the provided cache_key from original context when creating child contexts
  • 2b7706a: [Serializer] take unnamed variadic parameters into account when denormalizing
  • 4eb23d8: [Mailer] throw TransportException when unable to read from socket
  • 46694f6: [Serializer] do not overwrite the cache key when it is false
  • 4a124ac: [TwigBridge] separate child and parent context in NotificationEmail on writes
  • 2e025f9: [HttpClient] fix pausing responses before they start when using curl
  • f53e4ae: [DependencyInjection] support lazy evaluated exception messages with Xdebug 3
  • a67e8bd: [Notifer] set messageId of SentMessage in Smsapi
  • a63f545: [Mime] fix serializing uninitialized RawMessage::$message to null
  • 27346bc: [Messenger] fix TypeError should throw MessageDecodingFailedException in PhpSerializer
  • 0566c39: [Routing] fixed priority getting lost when setting localized prefix
  • f0a9916: [Console] allow false as a $shortcut in InputOption
  • 4e6d1b0: [String] fix plural of word ending by pus
  • 98435e4: [Mailer] fix usage of stream_set_timeout in case of microseconds
  • 84ae858: [Console] fix color support for TTY output

6.3 changelog:

  • 893d30e: [Mailer] fix sender header encoding in Mailgun
  • 2fae7d5: [MonologBridge] fix context data and display extra data
  • eb32f49: [DependencyInjection] #[Autowire] attribute should have precedence over bindings
  • 78f82b9: [HttpKernel] fix RequestPayloadValueResolver handling error with no ExpectedTypes

6.4 changelog:

  • 947cf27: [Mailer] fix attachment handling in Scaleway
  • 7aab885: [Form] use self-closing input syntax again
  • 84f5bdc: [DependencyInjection] fix loading all env vars from secrets when only a subset is needed
  • c3879f6: [Translation] fix constant domain resolution in PhpAstExtractor
  • a318801: [Validator] fix option filenameMaxLength to the File constraint
  • 30810dd: [Notifier] updated the NTFY notifier to run without a user parameter
  • af74d12: [FrameworkBundle] fix ConfigBuilderCacheWarmer should be non-optional
  • cb68bf3: [Config] provide more precise phpdoc for FileLocatorInterface::locate()
  • cb0817c: [DoctrineBridge] fix detection of Xml/Yaml driver in DoctrineExtension
  • 4fe7828: [AssetMapper] fix JavaScript compiler load imports from JS strings
  • 30a02c4: [AssetMapper] fix exception if assets directory is missing in production
  • 2ba3505: [HttpFoundation] fix clearing CHIPS cookies
  • 61794ae: [Mailer] fix payload converter getReason in Mailgun

7.0 changelog:

  • ee07003: [HttpKernel] fix including welcome page multiple times

7.1 changelog:

  • 3cbadd8: [Console] remove needless state from QuestionHelper
  • 1a75311: [DependencyInjection] fix replacing arguments
  • 5091cd5: [Mailer] add DSN param auto_tls to disable automatic STARTTLS in Smtp
  • 4a49af8: [DependencyInjection] dump enums with the !php/enum tag in Yaml config
  • 6fc9000: add Rector as a Symfony 7.1 sponsor
  • 5c7f4b0: add PHPDoc to attributes properties
  • 06c7b81: [ExpressionLanguage] add min and max php functions
  • c8d24c5: [FrameworkBundle] add SecretsRevealCommand
  • f0f3040: [FrameworkBundle, HttpClient] add ThrottlingHttpClient to limit requests within a timeframe
  • e5d1e1e: [PropertyInfo] restrict access to PhpStanExtractor based on visibility
  • bf3b54b: [Intl] move emoji data in a new component
  • 6fd41bb: [Serializer] add DateTimeNormalizer::CAST_KEY context option
  • 0c1de1b: [DependencyInjection] add Lazy attribute for classes and arguments
  • 3a4889f: [Security] add CAS 2.0 AccessToken handler
  • d00444c: [Yaml] allow to get all the enum cases
  • a770fae: [Validator] add additional versions (*_NO_PUBLIC, *_ONLY_PRIV and *_ONLY_RES) in IP address & CIDR constraint
  • 87f1a34: [Serializer] add Default and "class name" default groups
  • 4d8c8bc: [Console] InputArgument and InputOption code cleanup
  • 3feccf7: [HttpFoundation] add QueryParameterRequestMatcher
  • 1e358d9: [HttpFoundation] add HeaderRequestMatcher
  • 29632fd: [Config] allow custom meta location in ResourceCheckerConfigCache
  • e4cfb66: [TypeInfo] introduce component
  • d2d36b5: [CssSelector] add support for :is() and :where()
  • 40a2cfb: [Yaml] fix Yaml Parser with quote end in a new line
  • f9bdfb2: [TwigBridge] allow twig:lint to excludes dirs

Symfony CLI

Symfony CLI is a must-have tool when developing
Symfony applications on your local machine. It includes the
Symfony Local Server,
the best way to run local Symfony applications. This week Symfony CLI released
its new 5.8.5
and 5.8.6
versions with the following changes:

  • Make sure Doctrine configuration takes precedence over Platform.sh configuration (@fabpot)
  • Add DB versions to Doctrine config when using Docker locally (@fabpot)
  • Fix Doctrine URLs (do not encode to avoid having %xxx% that would be seen as parameter name to replace by Symfony DI) (@fabpot)

SymfonyCasts Updates

SymfonyCasts is the official way to learn Symfony.
Select a track for a guided path through 100+ video tutorial courses about
Symfony, PHP and JavaScript.

This week, SymfonyCasts published the following updates:

Newest issues and pull requests

They talked about us

Call to Action

Sponsor the Symfony project.