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.
- 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
- 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
- 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
- ee07003: [HttpKernel] fix including welcome page multiple times
- 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:
- (Live Stream) Live Stream #7: Let's build some Twig UI Components
- (Video) Upgrading & What's in Symfony 7: Upgrading to Symfony 6.4
- (Video) Upgrading & What's in Symfony 7: Flex Recipe Updates
- (Video) Upgrading & What's in Symfony 7: Encore, StimulusBundle & their Recipe Changes
- (Video) Upgrading & What's in Symfony 7: Goodbye SensioFrameworkExtraBundle
- (Video) Upgrading & What's in Symfony 7: Finding & Eliminating Deprecations
Newest issues and pull requests
They talked about us
- Symfony Station Communiqué - 02 February 2024
- Creating a Custom Hydrator in Doctrine and Symfony for Enhanced Performance with DTOs
- Implementing Workflow Component In Symfony With Multiple States Simultaneously
- LDAP authentication into your Symfony application
- Wars of Symfony Runtimes: A Performance Odyssey
- SensioLabs and Symfony in Mallorca for the Ibexa 2024 conference
- Understanding and Implementing the Symfony Workflow Component in Laravel
- Déployer une application Symfony et Vue.js sur Cloud Run
- Logstash, Manticore, Nginx и Symfony: сбор, агрегация и быстрый поиск логов
Call to Action
- Follow Symfony on Twitter and retweet this article.
- Subscribe to the Symfony blog RSS and never miss a Symfony story again.