A Week of Symfony #941 (6-12 January 2025)

This week, Symfony development activity was very intense. The upcoming Symfony 7.3 version added a Slug constraint, introduced support for union types in OptionsResolver, enabled using HTTP/3 with the CurlHttpClient, and added support for invokable commands and input attributes. In addition, we published a summary of the Symfony project activity in 2024.

Symfony development highlights

This week, 109 pull requests were merged (86 in code and 23 in docs) and 64 issues were closed (49 in code and 15 in docs). Excluding merges, 58 authors made additions and deletions. See details for code and docs.

6.4 changelog:

8a3a57d: [Yaml] reject inline notations followed by invalid content
c557e18: [AssetMapper] fix JavaScript compiler creates self-referencing imports
d3583b9: [Serializer] fix exception thrown by YamlEncoder
dc7b96c: [Doctrine, Messenger] prevent multiple TransportMessageIdStamp being stored in envelope
269ba59: [WebProfilerBundle] fix event delegation on links inside toggles
9590658: [Messenger] fix TransportMessageIdStamp not always added
82011ee: [Yaml] fix inline notation with inline comment
d6fa9a8: [RemoteEvent, Webhook] fix SendgridRequestParser and SendgridPayloadConverter
d7e6148: [PropertyInfo] make sure that SerializerExtractor returns null for invalid class metadata
58a4d30: [RemoteEvent, Webhook] fix SendgridPayloadConverter category support
8d5be07: [Mailer] fix Sendmail memory leak
86b9250: [HttpFoundation] fix IpUtils::anonymize exception when using IPv6 link-local addresses with RFC4007 scoping
dbf547b: [HttpClient] fix Undefined array key connection
e3950a4: [HttpClient] ignore RuntimeExceptions thrown when rewinding the PSR-7 created in HttplugWaitLoop::createPsr7Response
a6ead57: [Routing] fix configuring a single route’s hosts
89ba0e5: [VarDumper] fix blank strings display
351a2ec: [Mailer] fix SMTP stream EOF handling on Windows by using feof()
3ceff1d: [FrameworkBundle, HttpFoundation] reset Request’s formats using the service resetter
2cd364f: [Scheduler] clarify description of exclusion time

7.1 changelog:

75303aa: [DoctrineBridge] clean up code for doctrine/persistence 2.x

7.2 changelog:

e363f16: [WebProfilerBundle] fix loading of toolbar stylesheet
f6dcd9f: [Form] do not render hidden CSRF token forms with autocomplete set to off

7.3 changelog:

8ce6d45: [Notifier] reject invalid option types in the Brevo transport
a36b981: [DependencyInjection] support @> as a shorthand for !service_closure in YamlFileLoader
8c069cd: [Serializer] deprecate the CompiledClassMetadataFactory
18d08ff: [Validator] add Slug constraint
dc7b96c: [Doctrine, Messenger] prevents multiple TransportMessageIdStamp being stored in envelope
31df2cf: use spl_object_id() instead of spl_object_hash()
137fe02: [Lock] use a WeakMap as store registry
cd24b4b: [OptionsResolver] support union of types
0aed9fa: [FrameworkBundle, PropertyInfo] wire the ConstructorExtractor class
bbe1b6e: [HttpFoundation] define phpdoc type for Response „statusTexts“
f5b46e9: [Validator] fix named arguments support for the Slug constraint
fa602c7: [HttpClient] allow using HTTP/3 with the CurlHttpClient
6298bfa: [Security] sync SecurityExpressionLanguage constructor with parent
4c071c2: [PhpUnitBridge] enable configuring mock namespaces with attributes
d240a6d: [FrameworkBundle] always display service arguments & deprecate –show-arguments option for debug:container
9c0d47e: [FrameworkBundle] add compiler pass only if it exists
4dcb217: [PropertyAccess] move dependency definitions outside of Extension
8dc32f7: [AssetMapper] skip test if not supported compressors are available
8f04a56: [OptionResolver] allow whitespace in types
c98cfb6: [VarDumper] add casters for object-converted resources
8f6560c: [Console] add support for invokable commands and input attributes
5fca27b: [TwigBridge] align isGrantedForUser on isGranted with falsy $field
dfcc142: [Console] invokable command deprecations

Newest issues and pull requests

Configure a custom marshaller in cache framework bundle per cache pool
[Console] Add broader support for command help definition
[Pgp] Add the component
[JsonEncoder] Allow to warm up arbitrary types
[AccessControl] Add Access Control component with strategies and voters
[OptionsResolver] Add support for array<> syntax to validate keys

Symfony Jobs

These are some of the most recent Symfony job offers:

Symfony Developer at fortrabbit
Full-time – €50,000 – €70,000 / year
Full remote
View details
Backend Symfony Developer at anyip.io
Contract / Freelance – $20 – $40 / hour
Full remote
View details
Symfony Developer at Kennisnet
Full-time – €4,104 – €5,673 / month
Remote + part-time onsite (Zoetermeer, Netherlands)
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 – Doctrine, Symfony 7 & the Database:
Starship Upgrade: Adding Slug and Timestamp Fields

(Video) Symfony 7 – Doctrine, Symfony 7 & the Database: Auto Slug and Timestamps with Doctrine Extensions
(Video) Symfony 7 – Doctrine, Symfony 7 & the Database: High-Tech Controllers: Auto-inject Entities
(Video) Symfony 7 – Doctrine, Symfony 7 & the Database: Black Hole: Deleting Entities
(Video) Symfony 7 – Doctrine, Symfony 7 & the Database: Ship Upgrades: Updating an Entity

They talked about us

Symfony Station Communiqué – 10 January 2025
Symfony @required – Avoid the Temptation and Use it Right
Replacing laminas-mail with Symfony mailer in dot-mail

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.

Sponsor the Symfony project.

Symfony Blog

Read More

Latest News

PHP-Releases

PHP 8.3.15 released!

PHP 8.2.27 released!

PHP 8.1.31 released!

Generated by Feedzy