Skip to content

DTO

DTO combina un ObjectSchema con un constructor a partir de datos ya validados.

php
final class Signup extends \Maybe\DTO\DTO
{
    public string $email;

    public static function schema(): \Maybe\Schema\ObjectSchema
    {
        return \Maybe\Schema\Schema::shape([
            'email' => \Maybe\Schema\Schema::string()->trimmed(),
        ]);
    }

    protected static function fromValidated(array $validated)
    {
        $dto = new self();
        $dto->email = $validated['email'];
        return $dto;
    }
}

Signup::fromArray($input) devuelve Result<Signup, ValidationErrorBag>; Signup::parse($input) devuelve el DTO o lanza por datos inválidos. Mantén fromValidated() como una frontera: solo recibe datos que ya pasaron el schema.