Mercurial > hg > isophonics-drupal-site
annotate vendor/consolidation/annotated-command/src/Hooks/Dispatchers/ValidateHookDispatcher.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
rev | line source |
---|---|
Chris@0 | 1 <?php |
Chris@0 | 2 |
Chris@0 | 3 namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers; |
Chris@0 | 4 |
Chris@0 | 5 use Consolidation\AnnotatedCommand\AnnotationData; |
Chris@0 | 6 use Consolidation\AnnotatedCommand\CommandData; |
Chris@0 | 7 use Consolidation\AnnotatedCommand\CommandError; |
Chris@0 | 8 use Consolidation\AnnotatedCommand\Hooks\HookManager; |
Chris@0 | 9 use Consolidation\AnnotatedCommand\Hooks\ValidatorInterface; |
Chris@0 | 10 |
Chris@0 | 11 /** |
Chris@0 | 12 * Call hooks |
Chris@0 | 13 */ |
Chris@0 | 14 class ValidateHookDispatcher extends HookDispatcher implements ValidatorInterface |
Chris@0 | 15 { |
Chris@0 | 16 public function validate(CommandData $commandData) |
Chris@0 | 17 { |
Chris@0 | 18 $hooks = [ |
Chris@0 | 19 HookManager::PRE_ARGUMENT_VALIDATOR, |
Chris@0 | 20 HookManager::ARGUMENT_VALIDATOR, |
Chris@0 | 21 HookManager::POST_ARGUMENT_VALIDATOR, |
Chris@0 | 22 HookManager::PRE_COMMAND_HOOK, |
Chris@0 | 23 HookManager::COMMAND_HOOK, |
Chris@0 | 24 ]; |
Chris@0 | 25 $validators = $this->getHooks($hooks, $commandData->annotationData()); |
Chris@0 | 26 foreach ($validators as $validator) { |
Chris@0 | 27 $validated = $this->callValidator($validator, $commandData); |
Chris@0 | 28 if ($validated === false) { |
Chris@0 | 29 return new CommandError(); |
Chris@0 | 30 } |
Chris@0 | 31 if (is_object($validated)) { |
Chris@0 | 32 return $validated; |
Chris@0 | 33 } |
Chris@0 | 34 } |
Chris@0 | 35 } |
Chris@0 | 36 |
Chris@0 | 37 protected function callValidator($validator, CommandData $commandData) |
Chris@0 | 38 { |
Chris@0 | 39 if ($validator instanceof ValidatorInterface) { |
Chris@0 | 40 return $validator->validate($commandData); |
Chris@0 | 41 } |
Chris@0 | 42 if (is_callable($validator)) { |
Chris@0 | 43 return $validator($commandData); |
Chris@0 | 44 } |
Chris@0 | 45 } |
Chris@0 | 46 } |