The toStringable() method converts URI objects into Stringable instances, providing direct access to Laravel's string manipulation methods.
Previously, applying string transformations to URI objects required wrapping them with Str::of():
Str::of(Uri::of('http://localhost')->withScheme('https'));
The toStringable() method removes this extra step:
use Illuminate\Support\Uri; Uri::of('http://localhost')->withScheme('https')->toStringable();
This maintains method chaining from URI construction through string operations:
$endpoint = Uri::of('http://api-service.com') ->withPath('/users') ->withQuery(['active' => 1, 'limit' => 25]) ->toStringable() ->replace('/users', '/v2/users') ->lower() ->toString();
URL formatting for logging shows string method integration:
$logUrl = Uri::of('http://example.com/endpoint') ->withPath('/api/long/path/resource') ->toStringable() ->limit(40, '...') ->toString(); $masked = Uri::of('https://api.service.com/users/12345') ->toStringable() ->mask('*', -5, 5) ->toString();
The method provides access to all Stringable operations including case conversion, truncation, replacement, and masking without breaking the method chain or requiring helper function wrapping.