🎯
Attribute-based DTOs
Define request structures using
Transform HTTP requests into strictly typed DTOs with automatic validation, casting, and full IDE support.
use Solo\RequestHandler\Attributes\Field;
use Solo\RequestHandler\Request;
final class CreateProductRequest extends Request
{
#[Field(rules: 'required|string|max:255')]
public string $name;
#[Field(rules: 'required|numeric|min:0')]
public float $price;
#[Field(rules: 'nullable|integer|min:0')]
public int $stock = 0;
#[Field(generator: UuidGenerator::class)]
public string $id;
}
// Usage in controller
$dto = $requestHandler->handle(CreateProductRequest::class, $request);
echo $dto->name; // string - full IDE support
echo $dto->price; // float - auto-casted
echo $dto->id; // string - auto-generated UUIDcomposer require solophp/request-handlerRequirements: PHP 8.2+, PSR-7 HTTP Message