amphp/uri package provides a minimal, focused solution for URI parsing and resolution, making it suitable for applications requiring strict URI validation, normalization, or decomposition (e.g., microservices, APIs, or CLI tools).Illuminate\Support\Facades\URL and Illuminate\Http\Request already handle most URI use cases, but this package could complement:
mailto:, ftp:, or data: URIs in legacy systems)../relative paths, handling ~ in hostnames).file://, data:)?Illuminate\Support\Str: For simple URI manipulation.symfony/psr-http-message: For HTTP-specific URIs in PSR-7/PSR-15 contexts.bobthecoder/laravel-http-client: For advanced HTTP URI handling.URL::isValid() with stricter RFC-compliant checks.URL facade for parsing/resolution performance.use Amp\Uri\Uri;
$uri = Uri::fromString(request()->input('custom_uri'));
if (!$uri->isValid()) { abort(400); }
URL::to() for non-HTTP URIs (e.g., mailto: links).spatie/async-command).class CustomUriService {
public function parse(string $uri): ?Uri {
try {
return Amp\Uri\Uri::fromString($uri);
} catch (\Throwable $e) {
return null; // Fallback to Laravel's URL::to()
}
}
}
array_unpack changes).symfony/psr-http-message).// config/app.php
'providers' => [
// ...
Amp\Uri\Provider::class, // Hypothetical; may need custom binding
];
public function handle($request, Closure $next) {
$uri = Amp\Uri\Uri::fromString($request->getUri());
if (!$uri->isValid()) { abort(400); }
return $next($request);
}
use Amp\Loop;
Loop::run(function () {
$uri = Amp\Uri\Uri::fromString('https://example.com');
$resolved = $uri->resolve('/path'); // Async-friendly
});
| Scenario | Risk | Mitigation |
|---|---|---|
| Mal |
How can I help you explore Laravel packages today?