This week, Symfony development activity focused on improving the HTTP Cache attribute and making some changes to controller event attributes. Meanwhile, we published more information about the upcoming SymfonyLive Paris 2026 conference. Lastly, we introduced the Symfony 8 certification.
Symfony development highlights
This week, 58 pull requests were merged (41 in code and 17 in docs) and 18 issues were closed (12 in code and 6 in docs). Excluding merges, 19 authors made additions and deletions. See details for code and docs.
- 2234b44: [FrameworkBundle] ensure a fresh container is used after cache warmup in KernelTestCase
- 0f1e8fe: [FrameworkBundle] check for console package before register CommandDataCollector
- 1fd5a2c: [Translation] fix handling of empty lines in CsvFileLoader
- 9cbc471, 480ca50, d5e0c77, 61ff8e2, be31ead, 2df4c9a, 60f9269, 6c1d55d, 02b9876, c7bb252, fc44ca5, 84080ab, 5aa5249: do not use PHPUnit mock objects without configured expectations
- 74a7ef0: [Config] add back missing enabled key in normalization step
- 9f0c530: [String] fix UnicodeString::startsWith()/endsWith() on strings that start/end with a zero
- 9b7b465: [ObjectMapper] merge nested properties when targeting the same class
- 12c438b: [HttpKernel] allow the Cache attribute to be applied conditionally
- 47ae5eb: [Yaml] prevent excessive backtracking in leading comments
- 64381b1: [PhpUnitBridge] add logic for checking for dist.xml, xml.dist and xml phpunit config
- cd683e7: [FrameworkBundle] remove reverse class object mapper metadata factory service if its class does not exist
- 5e5107d: [Serializer] prevent excessive backtracking in name converters
- 6466705: [HttpKernel] optimize dealing with #[Cache] if condition
- 5228771: [HttpKernel] remove state from CacheAttributeListener
- f5db101: [HttpKernel] remove redundant code from CacheAttributeListener
- 56c40dd: [HttpKernel] return attributes as a flat list when using Controller[Arguments]Event::getAttributes(*)
Newest issues and pull requests
- [HttpKernel] Expose controller metadata throughout the request lifecycle
- [FrameworkBundle] Add shortcut to run console command in tests
- [DependencyInjection] Add #[MapParameters] attribute
- [Semaphore] Add SemaphoreKeyNormalizer
- [Messenger] Add support for custom type in Serializer Transport
Symfony Jobs
These are some of the most recent Symfony job offers:
- Symfony Developer at Paystone
Full-time - CA$75,000 – CA$100,000 / year
Full remote
View details - Backend Symfony Developer at DonkeyCode
Contract / Freelance - €400 – €450 / day
Full remote
View details - Symfony Developer at Dutch Volleyball Federation Nevobo
Full-time - €33,000 – €46,000 / year
Remote + part-time onsite (Utrecht, Netherlands)
View details - Backend Symfony Developer at SportFinder
Full-time - €3,500 – €4,500 / month
Remote + part-time onsite (Charleroi, Belgium)
View details - DevOps for a Symfony project at Dayuse
Full-time - €50,000 – €60,000 / year
Remote + part-time onsite (Paris, France)
View details
You can publish a Symfony job offer for free on symfony.com.
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:
- (Video) Symfony 7 Forms: The Basics: Built-in Symfony Form Themes
- (Video) Symfony 7 Forms: The Basics: Multiple Submit Buttons
They talked about us
- How to Scale to a Billion Documents in Symfony
- Why I built another Audit Bundle for Symfony
- DDD Symfony Bundle: A DDD-Ready Kernel and Messenger Buses Without Hidden Magic
- Microservices et contrats d’API : Jane comme source de vérité
Call to Action
- Follow Symfony on X, on Mastodon, on Bluesky and on Threads and share this article.
- Subscribe to the Symfony blog RSS and never miss a Symfony story again.