1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* @link https://github.com/old-town/workflow-zf2-dispatch |
4
|
|
|
* @author Malofeykin Andrey <[email protected]> |
5
|
|
|
*/ |
6
|
|
|
namespace OldTown\Workflow\ZF2\Dispatch\Metadata\Target\Dispatch; |
7
|
|
|
|
8
|
|
|
/** |
9
|
|
|
* Class DispatchConditionMetadata |
10
|
|
|
* |
11
|
|
|
* @package OldTown\Workflow\ZF2\Dispatch\Metadata\Target\Dispatch |
12
|
|
|
*/ |
13
|
|
|
class DispatchConditionMetadata |
14
|
|
|
{ |
15
|
|
|
/** |
16
|
|
|
* @var string |
17
|
|
|
*/ |
18
|
|
|
const CONDITION_RUN_TYPE_SERVICE = 'service'; |
19
|
|
|
|
20
|
|
|
/** |
21
|
|
|
* @var string |
22
|
|
|
*/ |
23
|
|
|
const CONDITION_RUN_TYPE_METHOD = 'method'; |
24
|
|
|
|
25
|
|
|
/** |
26
|
|
|
* Разрешенные типы запуска workflow |
27
|
|
|
* |
28
|
|
|
* @var array |
29
|
|
|
*/ |
30
|
|
|
protected $allowConditionRunType = [ |
31
|
|
|
self::CONDITION_RUN_TYPE_SERVICE => self::CONDITION_RUN_TYPE_SERVICE, |
32
|
|
|
self::CONDITION_RUN_TYPE_METHOD => self::CONDITION_RUN_TYPE_METHOD |
33
|
|
|
]; |
34
|
|
|
|
35
|
|
|
/** |
36
|
|
|
* Тип запуска обработчика проверки условий |
37
|
|
|
* |
38
|
|
|
* @var string |
39
|
|
|
*/ |
40
|
|
|
protected $type; |
41
|
|
|
|
42
|
|
|
/** |
43
|
|
|
* Определяет обработчик для провекри условий |
44
|
|
|
* |
45
|
|
|
* @var string |
46
|
|
|
* |
47
|
|
|
*/ |
48
|
|
|
protected $handler; |
49
|
|
|
|
50
|
|
|
/** |
51
|
|
|
* Параметры обработчика |
52
|
|
|
* |
53
|
|
|
* @var array |
54
|
|
|
*/ |
55
|
|
|
protected $params = []; |
56
|
|
|
|
57
|
|
|
/** |
58
|
|
|
* @param $type |
59
|
|
|
* @param $handler |
60
|
|
|
* @param array $params |
61
|
|
|
* |
62
|
|
|
* @throws Exception\InvalidMetadataException |
63
|
|
|
*/ |
64
|
|
|
public function __construct($type, $handler, array $params = []) |
65
|
|
|
{ |
66
|
|
|
$this->setType($type); |
67
|
|
|
$this->setHandler($handler); |
68
|
|
|
$this->setParams($params); |
69
|
|
|
} |
70
|
|
|
|
71
|
|
|
/** |
72
|
|
|
* Тип запуска обработчика проверки условий |
73
|
|
|
* |
74
|
|
|
* @return string |
75
|
|
|
*/ |
76
|
|
|
public function getType() |
77
|
|
|
{ |
78
|
|
|
return $this->type; |
79
|
|
|
} |
80
|
|
|
|
81
|
|
|
/** |
82
|
|
|
* Устанавливает тип запуска обработчика проверки условий |
83
|
|
|
* |
84
|
|
|
* @param string $type |
85
|
|
|
* |
86
|
|
|
* @return $this |
87
|
|
|
* |
88
|
|
|
* @throws Exception\InvalidMetadataException |
89
|
|
|
*/ |
90
|
|
View Code Duplication |
public function setType($type) |
|
|
|
|
91
|
|
|
{ |
92
|
|
|
if (!array_key_exists($type, $this->allowConditionRunType)) { |
93
|
|
|
$errMsg = sprintf('Not allowed type %s', $type); |
94
|
|
|
throw new Exception\InvalidMetadataException($errMsg); |
95
|
|
|
} |
96
|
|
|
$this->type = $type; |
97
|
|
|
|
98
|
|
|
return $this; |
99
|
|
|
} |
100
|
|
|
|
101
|
|
|
/** |
102
|
|
|
* Определяет обработчик для провекри условий |
103
|
|
|
* |
104
|
|
|
* @return string |
105
|
|
|
*/ |
106
|
|
|
public function getHandler() |
107
|
|
|
{ |
108
|
|
|
return $this->handler; |
109
|
|
|
} |
110
|
|
|
|
111
|
|
|
/** |
112
|
|
|
* Устанавливает обработчик для провекри условий |
113
|
|
|
* |
114
|
|
|
* @param string $handler |
115
|
|
|
* |
116
|
|
|
* @return $this |
117
|
|
|
*/ |
118
|
|
|
public function setHandler($handler = null) |
119
|
|
|
{ |
120
|
|
|
$this->handler = null !== $handler ? (string)$handler: $handler; |
121
|
|
|
|
122
|
|
|
return $this; |
123
|
|
|
} |
124
|
|
|
|
125
|
|
|
/** |
126
|
|
|
* @return array |
127
|
|
|
*/ |
128
|
|
|
public function getParams() |
129
|
|
|
{ |
130
|
|
|
return $this->params; |
131
|
|
|
} |
132
|
|
|
|
133
|
|
|
/** |
134
|
|
|
* @param array $params |
135
|
|
|
* |
136
|
|
|
* @return $this |
137
|
|
|
*/ |
138
|
|
|
public function setParams(array $params = []) |
139
|
|
|
{ |
140
|
|
|
$this->params = $params; |
141
|
|
|
|
142
|
|
|
return $this; |
143
|
|
|
} |
144
|
|
|
|
145
|
|
|
/** |
146
|
|
|
* |
147
|
|
|
* @throws Exception\InvalidMetadataException |
148
|
|
|
*/ |
149
|
|
|
public function validate() |
150
|
|
|
{ |
151
|
|
|
if (null === $this->getType()) { |
152
|
|
|
$errMsg = 'Condition run type not specified'; |
153
|
|
|
throw new Exception\InvalidMetadataException($errMsg); |
154
|
|
|
} |
155
|
|
|
|
156
|
|
|
|
157
|
|
|
$handler = $this->getHandler(); |
158
|
|
|
$handler = trim($handler); |
159
|
|
|
if (null === $handler || 0 === strlen($handler)) { |
160
|
|
|
$errMsg = 'Condition handler not specified'; |
161
|
|
|
throw new Exception\InvalidMetadataException($errMsg); |
162
|
|
|
} |
163
|
|
|
} |
164
|
|
|
} |
165
|
|
|
|
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.