@@ 143-164 (lines=22) @@ | ||
140 | * @return mixed |
|
141 | * @throws NotIterableAttribute |
|
142 | */ |
|
143 | protected function processHandlerToResource(Attribute $definition, $value) |
|
144 | { |
|
145 | $type = $definition->getType(); |
|
146 | $handler = $this->handlers[$type]; |
|
147 | $parameters = $definition->getTypeParameters(); |
|
148 | ||
149 | if (! $definition->isMany()) { |
|
150 | return $handler->toResource($value, $type, $parameters); |
|
151 | } |
|
152 | ||
153 | if (! $value instanceof \Traversable && ! is_array($value)) { |
|
154 | throw new NotIterableAttribute($definition, $value); |
|
155 | } |
|
156 | ||
157 | $collection = []; |
|
158 | ||
159 | foreach ($value as $item) { |
|
160 | $collection[] = $handler->toResource($item, $type, $parameters); |
|
161 | } |
|
162 | ||
163 | return $collection; |
|
164 | } |
|
165 | ||
166 | /** |
|
167 | * Process value by registered data-type handler. |
|
@@ 175-196 (lines=22) @@ | ||
172 | * @return mixed |
|
173 | * @throws NotIterableAttribute |
|
174 | */ |
|
175 | protected function processHandlerFromResource(Attribute $definition, $value) |
|
176 | { |
|
177 | $type = $definition->getType(); |
|
178 | $handler = $this->handlers[$type]; |
|
179 | $parameters = $definition->getTypeParameters(); |
|
180 | ||
181 | if (! $definition->isMany()) { |
|
182 | return $handler->fromResource($value, $type, $parameters); |
|
183 | } |
|
184 | ||
185 | if (! $value instanceof \Traversable && ! is_array($value)) { |
|
186 | throw new NotIterableAttribute($definition, $value); |
|
187 | } |
|
188 | ||
189 | $collection = new \ArrayObject(); |
|
190 | ||
191 | foreach ($value as $item) { |
|
192 | $collection[] = $handler->fromResource($item, $type, $parameters); |
|
193 | } |
|
194 | ||
195 | return $collection; |
|
196 | } |
|
197 | } |