The command that became a method call

Eighty-eight commands with one handler each, dispatched through four frames of indirection.

// before
$this->bus->dispatch(new PlaceOrder($id, $lines));

// after
$this->orders->place($id, $lines);

// and the stack trace, which is the whole point:
//   before  Controller → Bus → Middleware × 3 →
//           HandlerLocator → Handler
//   after   Controller → Service

A command bus provides cross-cutting concerns and eighty-eight one-to-one mappings provide indirection. The transaction middleware moved to the two places that needed it and the authorisation check moved to the controller, both of which are better locations — and debugging is now reading a stack trace rather than following a dispatch.