For the same reason mentioned earlier (impossibility to throw exceptions inside `__toString()`), I would add a `toString()` method to the interface, but leave the choice to the implementation to add a `__toString()` proxy to it for convenience. That would force users who want a string at all costs to explicitly call `$request->toString()` and not `(string) $request`, which is fine, and actually reads better, to me.