Expect::string('mysql'), 'user' => Expect::type('?string')->required(), 'password' => Expect::type('?string'), 'options' => Expect::type('array|int')->default([]), 'debugger' => Expect::bool(true), 'mixed' => Expect::mixed()->required(), 'arr' => Expect::type('array')->default([1]), ], $schema->items); Assert::type($obj, (new Processor)->process($schema, ['user' => '', 'mixed' => ''])); });