Yii2 Actions used to be “standalone”… but still controller owned.
Even reusable actions had to live behind Controller::actions(), be instantiated with a controller, and run through the classic MVC controller pipeline.
In Yii2 22.0, that changes.
Routes can now resolve directly to standalone Action classes:
No empty controller ceremony.
No fake HealthController::actionIndex() wrapper.
No controller just because the framework historically required one.
Just a focused HTTP action:
- Typed run() arguments.
- DI-powered services.
- request/response handling.
- behaviors and filters
- Yii lifecycle still intact
This is not “rewriting Yii2.”
This is Yii2 becoming more friendly to use-case-first and vertical-slice-style architecture.
Same framework.
Cleaner boundaries.
Less legacy gravity.
More explicit application code.
Yii2 is not dead.
It is getting sharper. 🐘🔥
ALT The controller is no longer the center of the universe.