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 Security\ExpressionLanguage 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

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:

They talked about us

Call to Action

Published in #A week of symfony