This week, development activity was very intense in preparation for the release of Symfony 6.4 and 7.0 in 6 weeks. One of the most important tasks was the addition of Doctrine ORM 3 and DBAL 4 compatibility to Symfony 5.4 and up. We also updated the code to use some of the modern PHP 8 features. Finally, we announced the last days of the regular ticket prices for the SymfonyCon Brussels 2023 conference.
Symfony development highlights
This week, 77 pull requests were merged (65 in code and 12 in docs) and 48 issues were closed (39 in code and 9 in docs). Excluding merges, 53 authors made 6,185 additions and 1,528 deletions. See details for code and docs.
- adef494: [RateLimiter] TokenBucket policy fix for adding tokens with a predefined frequency
- 6cfd0bf: [WebProfilerBundle] fix markup to make link to profiler appear on errored WDT
- 4290999: [FrameworkBundle] fix calling Kernel::warmUp() when running cache:warmup
- f06a752: [FrameworkBundle] configure logger as error logger if the Monolog Bundle is not registered
- 6dfc142: [Cache, Doctrine, DoctrineBridge, Lock, Messenger] add compatibility with ORM 3 and DBAL 4
- 53e5e19: [Security] do not match request twice in HttpUtils
- 053b814: [DoctrineBridge] fix DBAL 4 compatibility
- 4825733: [Translation] prevent creating empty keys when key ends with a period
- f1a2eb3: [Validator] update Portuguese translation
- 69434b6: [Validator] update Japanese translation
- bd41480: [Validator] update Russian translation
- 1ebaaa6: [Validator] update Dutch translation
- c5bf294: [Validator] update Spanish translation
- f74034a: [Validator] update Persian translation
- 9d4149b: [Validator] update Indonesian translation
- 9dd19f6: [Validator] update Vietnamese translation
- da14597: [Validator] update Croatian translation
- 20ea2ae: [Validator] update Ukrainian translation
- 878393e: [Validator] update Slovenian translation
- 3f4228c: [Validator] update Belarusian translation
- fb4f862: [Mailer] capitalize sender header for Mailgun
- dd6342a: [HttpKernel] handle nullable callback of StreamedResponse
- f36e4ab: [Doctrine, DoctrineBridge, HttpFoundation, VarDumper] run tests with ORM 3 and DBAL 4
- 39a56d3: [FrameworkBundle] fix merge error with ErrorLoggerCompilerPass
- 21599a4: [Cache, VarExporter] fix proxy generation to deal with edgy behaviors of internal classes
- cf53ed1: [Cache] fix ArrayAdapter::freeze() return type
- d591d77: fix command descriptions (code conventions)
- cdf30c5: [Notifier] extend Telegram options for location, document, audio, video, venue, photo, animation, sticker & contact
- 3ceb506: [Console] add placeholders to ProgressBar for exact times
- d6c8797: [Mime] fix memory leak
- 85fc3f7: [Workflow] revert deprecation about Registry
- fc12885: [AssetMapper] add outdated command
- 2101962: [FrameworkBundle] add --exclude option to the cache:pool:clear command
- 748386b: [WebProfiler] profiler improvements / extract font from stylesheet
- 4e16f7b: [FrameworkBundle] add parameters deprecations to the output of debug:container command
- f3a09b9: [AssetMapper] automatically preload CSS files if WebLink available
- c868be4: [Finder] add early directory prunning filter support
- 9537ae2: [Serializer] add XmlEncoder::CDATA_WRAPPING context option
- 253968e: [DependencyInjection] simplify using DI attributes with ServiceLocator/Iterator
- ba7f78a: [FrameworkBundle] fix registering workflow.registry
- 1f2ec3e: [Notifier] fix version and exception signature in Telegram
- 3e9cabf: [TwigBundle] fix detecting the installed FrameworkBundle version
- 825ae03: [Console] dispatch ConsoleTerminateEvent when exiting on signal
- 841374c: [DoctrineBridge] spread some PHP 8 love
Newest issues and pull requests
- Improve PHPDoc descriptions of Attribute classes and parameters
- [Validator] Structure of BIC changed with ISO 9362:2022
- AssetMapper and serving own assets uploaded to a private CDN (like cloudfont)
- [HttpClient] Support amphp/http-client ^5
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) API Platform 3 Part 3: Custom Resources, Chapter 24: DTO Validation & Security
- (Video) API Platform 3 Part 3: Custom Resources, Chapter 25: MicroMapper: Central DTO Mapping
- (Video) API Platform 3 Part 3: Custom Resources, Chapter 26: Reusable Entity->Dto Provider & Processor
They talked about us
- Symfony Station Communiqué - 6 October 2023
- KeycloakClientBundle: A Symfony Bundle for Integrating with Keycloak
- Optimizing File Uploads in Symfony Using Stimulus: A Developer's Guide
- Clean controllers in Symfony (III): request handling
- Cracking the code: Symfony's search solution for 12 million words of documentation
- How Symfony & Twig Revamped My Routing and Page Rendering
- Symfony 6.3 Advanced Request Data Mapping
- Integrating OpenID Connect in Symfony 6.3: A Deep Dive into the Token Handler
- Webhook Integration in Symfony 6.3: Exploring the Webhook and RemoteEvent Components
- EntityManager is closed: Recovering from Doctrine exceptions
Call to Action
- Follow Symfony on Twitter and retweet this article.
- Subscribe to the Symfony blog RSS and never miss a Symfony story again.
I really used to love the "They talked about us"-Section, but I noticed recently that the quality of the linked articles - especially those published on Medium - declined massively. Often people just copy and paste code fragments provided by the official docs, add one or two comments in their own words and link back to the docs or a github repository for "more information". I know that "quality" is a quite subjective criteria, but would it be possible to mark articles published behind Medium's paywall so that a reader without a subscription is aware that they might "waste" their free monthly articles?