This week, the upcoming Symfony 6.4 and 7.0 versions merged more than 60 pull requests with new features. Meanwhile, Symfony launched a new initiative to help you organize your next Symfony-related meetup.

Symfony development highlights

This week, 137 pull requests were merged (114 in code and 23 in docs) and 97 issues were closed (64 in code and 33 in docs). Excluding merges, 44 authors made changes. See details for code and docs.

5.4 changelog:

  • b458745: [DoctrineBridge] allow to remove LazyLoaded listeners by object
  • f299846: [Workflow] fix MermaidDumper when place contains special char
  • 2f1ba4c: [Messenger] add forward compatibily with php-amqp v2
  • c43dcc6: [Cache] harden LockRegistry tests by considering PHP files only

6.3 changelog:

  • 17415c6: [Clock] load function only if not loaded before
  • fbb3f05: [Crawler] fix regression where cdata nodes will return empty string
  • 2f8af44: [DependencyInjection, HttpKernel] fix using #[AutowireCallable] with controller arguments
  • bbb5f5c: [DependencyInjection] do not add return in LazyClosure when return type of closure is void
  • ceb0103: add before/after examples to 6.3 UPGRADE guide

6.4 changelog:

  • 10487c7: User shorter closures
  • 07eea6d: [Mailer] precise AbstractApiTransport::getRecipients signature
  • 62904a6: [Scheduler] add AbstractTriggerDecorator
  • 139419d: do not declare the PSR-7 bridge to be replaced by symfony/symfony
  • be8897b: [Notifier] support local development for sns by adding sslmode option
  • 46386c2: avoid inconsistent override of getRecipients
  • 15e082d: [Serializer] groups annotation/attribute on class
  • 11b538c: [BrowserKit] add argument $serverParameters to click() and clickLink()
  • 9d47ba3: [PsrHttpMessageBridge] support php-http/discovery for auto-detecting PSR-17 factories
  • d660091: [Scheduler] make ScheduledStamp send-able
  • fbb3f05: [Crawler] fix regression where cdata nodes will return empty string
  • 185941e: [Workflow] add support for storing the marking in a property
  • 489c887: [Translation] Phrase translation provider
  • 3b34568: [Serializer] add support for seld/jsonlint
  • 3b6d372: [HttpKernel] RequestPayloadValueResolver Add support for custom http status code
  • f309b1d: [Uid] add more PHP doc to "export" functions
  • ae19099: [HttpKernel] add reset() implementation in DataCollector
  • f40687e: [FrameworkBundle, Serializer] add TranslatableNormalizer
  • 5fcaa74: [Form] removing self-closing slash from input fields
  • 1300cc2: [Workflow] add a profiler
  • 268a359: [Validator] validate time without seconds
  • e66a68c: [Process] support using Process::findExecutable() independently of open_basedir
  • 3a2b8cb: [Mime] update mimetypes
  • 7597687: [Intl] add support for ISO 3166-1 numeric codes
  • db1d6eb: [HttpKernel] strip exception file paths from log messages
  • 3303fa2: [Workflow] support multiline descriptions in PlantUML
  • 72c80dd: [Notifier] document Amazon Notifier SSLMODE option
  • 7a8959b: [Form] use logical ordering for type and extension methods
  • 3db10d5: [FrameworkBundle] remove redundant interface_exists() check
  • c864846: [HttpKernel] support backed enums in #[MapQueryParameter]
  • 08b93ad: [FrameworkBundle] enable json_decode_detailed_errors in dev by default
  • 2f85c15: [Uid] add additional type information to TimeBaseUuidFactory constructor
  • cf3f52a: [Security] add generic to UserProviderInterface
  • 3c9bf28: [FrameworkBundle] remove obsolete feature detection from cache warmers
  • 0ba946a: [Process] introducing a new PhpSubprocess handler
  • 623e921: [Workflow] add PHP attributes to register listeners and guards
  • f956606: [Scheduler] add --date to schedule:debug
  • fa3d5d4: [Scheduler] add some docs to explain the behavior
  • 20cefc8: [Scheduler] only use toString if defined for message
  • 6522566: [Scheduler] mark component as non experimental
  • 7e4793b: [AssetMapper] mark component as non experimental
  • 5da7dbf: [Webhook] mark component as non experimental
  • 18b9cad: [RemoteEvent] mark component as non experimental
  • bbb5f5c: [DependencyInjection] do not add return in LazyClosure when return type of closure is void
  • dc94413: [FrameworkBundle] fix minimum required HttpKernel component version
  • 0ce5112: [RemoteEvent, Webhook] add Mailjet support
  • 608c3ed: [HttpFoundation] use Symfony exception for request unexpected values
  • f78bbe0: [Scheduler] display friendly dates in debug:schedule
  • 49a1253: [RemoteEvent, Webhook] add Brevo support
  • 532dcda: [MonologBridge, SecurityBundle] remove calls to TokenInterface::isAuthenticated()
  • 0a9ef56: [FrameworkBundle] support APP_BUILD_DIR
  • ec7d86a: [SecurityBundle] add $badges argument to Security::login
  • bee1b9d: [Scheduler] add --all to debug:schedule
  • 7ebccf7: [DomCrawler, FrameworkBundle] add assertAnySelectorText*
  • c43dcc6: [Cache] harden LockRegistry tests
  • 34f46c6: [Security] do not make PasswordUpgraderInterface a generic
  • 6d7ca72: [FrameworkBundle, HttpKernel, MonologBridge] revisit wiring of debug loggers
  • cd53a82: improve 6.4 UPGRADE guide

7.0 changelog:

  • 2b86aa3: [Security] remove unused code about ROLE_PREVIOUS_ADMIN
  • 934dbad: [PsrHttpMessageBridge]
  • ae04717: [MonologBridge] remove Monolog 1 compat from FirePHPHandlerTest
  • b7ac126: improve upgrade guide 7.0 + remove 6.x guides
  • 4e19a66: [FrameworkBundle, MonologBridge] remove recently deprecated symbols

Newest issues and pull requests

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.5.8 version with the following changes:

  • Update supported Platform.sh services (@fabpot)
  • Update deps (@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.

These were some of the most relevant SymfonyCasts updates of the week:

They talked about us

Call to Action

Published in #A week of symfony