This week, Symfony worked on several pending features in preparation for the "feature freeze" period which starts next week: stateful firewalls now turn responses private only when needed, isGranted()/decide() no longer accept more than one role/attribute, the files generated by the profiler are now compressed and firewalls added a new anonymous lazy mode. Lastly, the new String component was finally merged to provide object-oriented strings management with an abstract unit system.
Symfony development highlights
This week, 124 pull requests were merged (67 in code and 57 in docs) and 59 issues were closed (35 in code and 24 in docs). Excluding merges, 62 authors made 7,660 additions and 3,820 deletions. See details for code and docs.
- 35b6701: [Lock] use Predis\ClientInterface instead of Predis\Client
- bb96c34: [Validator] added the missing translations for the Azerbaijani locale
- 4b2019d: [FrameworkBundle] fixed framework bundle lock configuration
- 650f179: [Translation] collect original locale in case of fallback translation
- 8dc0814: [WebProfilerBundle] fixed toolbar load when GET params are present in "_wdt" route
- ad89564: [Validator] accept underscores in the URL validator
- 293a22a: [DependencyInjection] fixed wrong exception when service is synthetic
- acca7ad: [Mime] apply RFC2047 encoding only to one header
- a53732f: [Security] used LegacyEventDispatcherProxy
- 479d8ee: [Form] added missing row_attr option to FormType
- 29a54c5: [Mailer, Messenger] ensure legacy event dispatcher compatibility
- d04fdee: [Form] names for buttons should start with lowercase
- 0222ea5: [Cache] fail gracefully when locking is not supported
- dff71ce: [HttpClient] fixed race condition when reading response with informational status
- abf11d8: [Messenger] return empty envelopes when RetryableException occurs
- 944cda7: [Console] do not include hidden commands in suggested alternatives
- ca25396: [HttpFoundation] allowed additinal characters in not raw cookies
- 8eaa5a8: allow using Twig 3
- b00b633: [Form] added "validate" option to SubmitType
- e84bd65: [Security] made stateful firewalls turn responses private only when needed
- 3c7172d: [Security] deprecated isGranted()/decide() on more than one attribute
- e2e73ef: [Messenger] added support for from_transport attribute on messenger.message_handler tag
- 89d7931: [HttpKernel] compress files generated by the profiler
- 745248f: [ErrorHandler] don't throw deprecations for return-types by default
- b180208: [ErrorHandler] show fallback error page when default error controller is disabled
- 4cf7ec1: [Yaml] fixed parsing inline YAML spanning multiple lines
- db5cf1a: [DependencyInjection] scoped singly-implemented interfaces detection by file
- 098584a: [FrameworkBundle] sort tagged services
- b0c2112: [Messenger] displayed real handler if handler is wrapped
- 7f43dc4: [DoctrineBridge] used VarCloner data instead of legacy array for query params
- 7a3bfac: [HttpFoundation] optimized normalization of headers
- 66f8f68: [DependencyInjection] replaced REMOTE_ADDR in trusted proxies with the current REMOTE_ADDR
- b1f6d0d: added types to constructors and private/final/internal methods
- b829439: [ErrorHandler] forwarded \Throwable
- 7d6b657: [DomCrawler] add a normalizeWhitespace argument to text() method
- 6fef3fb: [Security] added anonymous lazy mode to firewalls
- ae61ae5: [Messenger] improved error message when routing to an invalid transport
- e627989: [Console] do not leak hidden console commands
- 5440d67: [VarDumper] output the location of calls to dump()
- ec2afb7, 77e42d8: [Security] removed deprecated code paths
- 5d154fb: [String] a new component for object-oriented strings management with an abstract unit system
- 979be29: [FrameworkBundle] WebTestCase KernelBrowser::getContainer null return type
Newest issues and pull requests
- [HttpClient] implement async client
- Added shortcut methods to configure OptionsResolver options
- [Mailer] SentMessage->getMessageId()
- [Mailer] Amazon payload extension
They talked about us
- Implementing a search engine with elasticsearch and Symfony
- How to Create a Simple Symfony Application with Authentication
- Building NOS’s new Google AMP implementation
- How to retrieve specific and all YAML parameters from services.yaml in Symfony 4
- ¿Por qué considero a Symfony el mejor framework para PHP?
- Implémenter un moteur de recherche avec elasticsearch et Symfony
- Simplifiez vos formulaires Symfony
Call to Action
- Give Symfony a star on GitHub
- Follow Symfony on Twitter and retweet this article.
- Subscribe to the Symfony blog RSS and never miss a Symfony story again.