Skip to content

Input Validation

Goal: validate input and keep the original branch metadata available for later steps.

php
use Maxiviper117\ResultFlow\Result;

$result = Result::ok($input, ['request_id' => $requestId])
    ->ensure(fn (array $input) => isset($input['email']), 'Email is required')
    ->ensure(fn (array $input) => filter_var($input['email'], FILTER_VALIDATE_EMAIL) !== false, 'Email is invalid');

Why this pattern works

  • validation stays explicit
  • failures short-circuit
  • metadata survives the validation step

Variation

If you need all field errors at once, switch to Collecting batch errors.