Mercurial > hg > isophonics-drupal-site
comparison 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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers; | |
4 | |
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; | |
10 | |
11 /** | |
12 * Call hooks | |
13 */ | |
14 class ValidateHookDispatcher extends HookDispatcher implements ValidatorInterface | |
15 { | |
16 public function validate(CommandData $commandData) | |
17 { | |
18 $hooks = [ | |
19 HookManager::PRE_ARGUMENT_VALIDATOR, | |
20 HookManager::ARGUMENT_VALIDATOR, | |
21 HookManager::POST_ARGUMENT_VALIDATOR, | |
22 HookManager::PRE_COMMAND_HOOK, | |
23 HookManager::COMMAND_HOOK, | |
24 ]; | |
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(); | |
30 } | |
31 if (is_object($validated)) { | |
32 return $validated; | |
33 } | |
34 } | |
35 } | |
36 | |
37 protected function callValidator($validator, CommandData $commandData) | |
38 { | |
39 if ($validator instanceof ValidatorInterface) { | |
40 return $validator->validate($commandData); | |
41 } | |
42 if (is_callable($validator)) { | |
43 return $validator($commandData); | |
44 } | |
45 } | |
46 } |