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.
- 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
- 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
- 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
- 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
- [Validator] Simplify Constraint with target = class
- [Scheduler] dynamic schedules
- [Messenger] ability to manually ack a message
- [HttpFoundation] Introducing a ParameterBag::match method
- [Security] Ability to add roles in form_login_ldap by ldap group
- Optional parsable output for debug:translation
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:
- (Video) AssetMapper: Modern JS with Zero Build System, Chapter 16: Page-Specific CSS & JS
- (Video) AssetMapper: Modern JS with Zero Build System, Chapter 17: Excluding Files
- (Video) AssetMapper: Modern JS with Zero Build System, Chapter 18: Deploying to Platform.sh
- (Video) AssetMapper: Modern JS with Zero Build System, Chapter 19: Configuring the Platform.sh Deploy
- (Video) AssetMapper: Modern JS with Zero Build System, Chapter 20: Deploying the Assets
They talked about us
- Symfony Station Communiqué - 04 August 2023
- 6x faster Docker builds for Symfony and API Platform projects
- Validating requests on Symfony Framework
- SpiriitFormFilterBundle - Bundle Symfony
- A new way to squash your Doctrine migrations
- Creating a Social Media Aggregator with Symfony
- Symfony vs Flask vs Spring Boot — usability and coding speed
- How to create a sitemap.xml on Symfony Blog without Bundle
- How to publish domain events with doctrine listener
- Join us as we explore the strange new world of Symfony’s AssetMapper via SymfonyCast
- Des images Docker construites 6 fois plus rapidement pour vos projets Symfony et API Platform
Call to Action
- Follow Symfony on Twitter and retweet this article.
- Subscribe to the Symfony blog RSS and never miss a Symfony story again.
"[Scheduler] dynamic schedules" link has a typo, it redirect to a Symfony blog 404 instead of a Gitub issue.
@Corentin thanks for telling us about this error. It's fixed now.