When calling a function stops being “just calling a function” it often means your execution boundaries need rethinking. Check out how a CallableInvoker can bring consistency, context-aware execution, and decorators to your PHP handlers
dev.to/yceruto/when...
#php #symfony #arch #designpattern
Posts by Yonel Ceruto
🧟 After days and nights of toil: FrankenPHP 1.10 is alive!
🐘 PHP 8.5 support
🪽 New mercure_publish() function for easy real-time broadcasting with Mercure
⚙️ Enhanced extensions & custom workers (hello gRPC and WebSockets servers!)
github.com/php/frankenp...
This unlocks new possibilities, your input models can now hold logic. For example, you can add a method in your input class and mark it with `#[Interact]` to ask for required args.
Yes! you can finally use `$this` instead of `$input->getArgument()` and `$input->setArgument()`.
#Symfony #PHP #DX
Symfony 7.4 brings a cleaner way to define console inputs: command arguments and options can now be mapped directly to PHP classes and enums using attributes like `#[MapInput]`, `#[Argument]`, and `#[Option]`.
Type-safe, structured input for your CLI commands 🎉🍕🥓
#Symfony #PHP #DX
No more CORS headaches! 🤯
Mercure now supports 🌟 Wildcards 🌟 for CORS and allowed publication domains!
The highly requested feature is finally here. Go check out the details and update your setup! 👇
github.com/dunglas/merc...
See the full PR here: github.com/symfony/symf..., it contains detailed context, discussion, and implementation decisions behind FormFlow’s integration into Symfony 7.4.
There’s a full demo available: github.com/yceruto/form... explore it, experiment, and see FormFlow in action.
FormFlow covers most multistep form scenarios out of the box, from simple wizards to complex workflows, yet remains fully flexible for advanced customization when you need deeper control.
The controller:
FormFlow is not a standalone component, it’s seamlessly integrated into the Form component, preserving the same familiar patterns and workflow you already know from Symfony forms.
The form type:
FormFlow support for multistep forms has landed in Symfony 7.4, complete with a demo project and plenty of examples 🧵
Eager to see how others will build upon it and what new use cases emerge 🤓
Huge thanks to all reviewers and contributors who helped refine it! ❤️🔥
Test output before Symfony 7.4
Test output as of Symfony 7.4
As of #Symfony 7.4, functional tests’ error rendering will finally get you straight to the point with a beautiful, concise output 🥳 Especially useful when doing large refactorings that make dozens of such tests fail while progressing.
Before/After 👇
Building multistep forms with Symfony FormFlow will be easier, more flexible, and DX-first. Directly integrated into the Form component!
Here’s the Symfony 7.4 PR:
github.com/symfony/symf...
Want to try it out? Play with the demo app 👇
github.com/yceruto/form...
#Symfony #PHP #DX #FormFlow
Huge thanks to the Symfony community and organizers for the opportunity. Always a pleasure to share and learn with such passionate developers.
Here is the slides of this talk! speakerdeck.com/yceruto/form...
Yes, you can use the new __invoke() with input attributes and still extend Command class to override interact() or initialize() methods. No tradeoffs. Just clean DX 💅 #Symfony #PHP #CLI
🚀 New in Symfony 7.3: Invokable Commands and Input Attributes
➡️ symfony.com/blog/new-in-symfony-7-3-...
Online from Cuba, Yonel Ceruto is bringing the Latin spice to #SymfonyOnline June 2025 with “FormFlow: Build Stunning Multistep Forms”, no JavaScript needed ✨ symfony.com/blog/symfonyonline-june-...
Here are the materials used for the Symfony Console Facelift presentation I gave at #SymfonyDay Chicago:
speakerdeck.com/chalasr/symf...
Invokable Symfony Console Command
🚀Support for invokable commands will land in #Symfony Console 7.3. No need to extend the base Command class anymore 🎉 Input options/arguments are configured through #PHP Attributes. And there is more to come!
FrankenPHP 7K
FrankenPHP reached 7,000 stars on GitHub, thank you 🐘🧟🤩
If we reach 10k, we'll create a plush toy!
#Symfony 7.3 comes with a new JSON encoder component that is super efficient (10 times faster than the Serializer component with 2 times less memory). Great way to stream JSON payloads when combined with StreamedResponse.
Component: https://buff.ly/3ZMQEgh
Related PRs: https://buff.ly/3Zu2IBC
#Symfony 7.2 has just been released. Here is a list of curated features symfony.com/blog/symfony...
Big thanks to all the contributors!
Book cover for Understanding Eventsourcing
“When we start to think and reason about a system with Events and Facts, it forces everybody to look at the system from a different perspective. We no longer think about data, columns and rows but behavior.”
“Understanding Eventsourcing” By Martin Dilger
Don't forget to add `"bump-after-update": true` in your composer.json when its type is project (not lib!). I'll be faster and save some CPU cycles.
Example: github.com/symfony/skel...
🔥🔥🔥 FrankenPHP 1.3 has just been released: this version is 54% (!!) more efficient than the previous one and contains a bunch of new features and fixes, including file watchers support and new Prometheus metrics.
Read the announcement: dunglas.dev/2024/11/fran...
Hey bluesky!