azjezz/input-hydrator-bundle
InputInterface implementation, promoting cleaner controller logic and reducing manual request parsing.Illuminate\Http\Request or spatie/laravel-data packages.BadRequestHttpException on missing/invalid fields, comparable to Laravel’s Validator or FormRequest validation.azjezz/input-hydrator (v1.0), which may introduce minor abstraction overhead but is lightweight.config/bundles.php; Laravel relies on AppServiceProvider or package discovery.Illuminate\Container\Container and manual binding.RequestStack vs. Laravel’s Illuminate\Http\Request object structure.Request object, JSON payloads) map to Symfony’s RequestStack?required, string, custom rules)?BadRequestHttpException vs. Laravel’s Validator responses)?spatie/laravel-data?spatie/laravel-data, laravel-http-request-object, or custom DTO hydrators).Symfony vs. Laravel:
Bundle system vs. Laravel’s ServiceProvider/Package model.ArgumentResolver vs. Laravel’s manual DI or resolve() methods.RequestStack vs. Laravel’s Request facade.azjezz/input-hydrator package directly, bypassing the Symfony bundle. This would require:
Validator).Request resolver for DTOs.InputInterface to Laravel’s Illuminate\Contracts\Validation\ValidatedData.Target Use Case:
FormRequest instead).Request::input(), FormRequest, or manual DTOs).azjezz/input-hydrator:
// app/Providers/AppServiceProvider.php
use AzJezz\Input\Hydrator;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider {
public function register() {
$this->app->singleton(Hydrator::class, function ($app) {
return new Hydrator();
});
}
}
// app/Providers/RouteServiceProvider.php
use AzJezz\Input\InputInterface;
use Illuminate\Contracts\Container\BindingResolutionException;
use Illuminate\Routing\Router;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
public function boot() {
$this->app->resolving(function ($object, $app) {
if ($object instanceof InputInterface) {
$hydrator = $app->make(Hydrator::class);
try {
return $hydrator->hydrate($object, $app['request']->all());
} catch (\Exception $e) {
throw new BadRequestHttpException($e->getMessage());
}
}
});
}
BadRequestHttpException to Laravel’s Abort or Validator exceptions for consistency.| Feature | Symfony Bundle | Laravel Adaptation | Notes |
|---|---|---|---|
| DTO Hydration | ✅ Argument Resolver | ✅ Custom Resolver | Requires manual setup. |
| Validation | ✅ BadRequestHttpException |
⚠️ Custom mapping needed | Use Laravel’s Validator or Abort. |
| Request Data Source | ✅ RequestStack |
✅ Illuminate\Http\Request |
Data format must match (e.g., ->all()). |
| Dependency Injection | ✅ Symfony DI | ✅ Laravel Container | Bind Hydrator as a singleton. |
| Middleware Integration | ✅ Kernel Events | ✅ Laravel Middleware | Validate DTOs in Handle methods. |
InputInterface).BadRequestHttpException may need translation to Laravel’s Response or Validator exceptions.spatie/laravel-data but with stricter validation.How can I help you explore Laravel packages today?