3 namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
5 use Consolidation\AnnotatedCommand\AnnotationData;
6 use Consolidation\AnnotatedCommand\CommandData;
7 use Consolidation\AnnotatedCommand\CommandError;
8 use Consolidation\AnnotatedCommand\Hooks\HookManager;
9 use Consolidation\AnnotatedCommand\Hooks\ValidatorInterface;
14 class ValidateHookDispatcher extends HookDispatcher implements ValidatorInterface
16 public function validate(CommandData $commandData)
19 HookManager::PRE_ARGUMENT_VALIDATOR,
20 HookManager::ARGUMENT_VALIDATOR,
21 HookManager::POST_ARGUMENT_VALIDATOR,
22 HookManager::PRE_COMMAND_HOOK,
23 HookManager::COMMAND_HOOK,
25 $validators = $this->getHooks($hooks, $commandData->annotationData());
26 foreach ($validators as $validator) {
27 $validated = $this->callValidator($validator, $commandData);
28 if ($validated === false) {
29 return new CommandError();
31 if (is_object($validated)) {
37 protected function callValidator($validator, CommandData $commandData)
39 if ($validator instanceof ValidatorInterface) {
40 return $validator->validate($commandData);
42 if (is_callable($validator)) {
43 return $validator($commandData);