|
20 | 20 | use \Neomerx\JsonApi\Contracts\Document\ErrorInterface; |
21 | 21 | use \Neomerx\JsonApi\Contracts\Encoder\EncoderInterface; |
22 | 22 | use \Neomerx\JsonApi\Contracts\Schema\ContainerInterface; |
| 23 | +use \Neomerx\JsonApi\Contracts\Schema\SchemaFactoryInterface; |
23 | 24 | use \Neomerx\JsonApi\Contracts\Schema\SchemaProviderInterface; |
24 | 25 | use \Neomerx\JsonApi\Contracts\Document\DocumentFactoryInterface; |
25 | 26 | use \Neomerx\JsonApi\Contracts\Encoder\Parser\DataAnalyzerInterface; |
@@ -192,25 +193,42 @@ protected function encodeToJson(array $document) |
192 | 193 | * @return Encoder |
193 | 194 | */ |
194 | 195 | public static function instance(array $schemas, EncoderOptions $encodeOptions = null) |
| 196 | + { |
| 197 | + /** @var SchemaFactoryInterface $schemaFactory */ |
| 198 | + /** @var DocumentFactoryInterface $documentFactory */ |
| 199 | + /** @var ParserFactoryInterface $parserFactory */ |
| 200 | + /** @var HandlerFactoryInterface $handlerFactory */ |
| 201 | + /** @var ParametersFactoryInterface $parameterFactory */ |
| 202 | + list($schemaFactory, $documentFactory, $parserFactory, $handlerFactory, $parameterFactory) = |
| 203 | + static::getFactories(); |
| 204 | + |
| 205 | + $container = $schemaFactory->createContainer($schemas); |
| 206 | + |
| 207 | + return new self( |
| 208 | + $documentFactory, |
| 209 | + $parserFactory, |
| 210 | + $handlerFactory, |
| 211 | + $parameterFactory, |
| 212 | + $container, |
| 213 | + $encodeOptions |
| 214 | + ); |
| 215 | + } |
| 216 | + |
| 217 | + /** |
| 218 | + * @return array [$schemaFactory, $documentFactory, $parserFactory, $handlerFactory, $parameterFactory] |
| 219 | + */ |
| 220 | + protected static function getFactories() |
195 | 221 | { |
196 | 222 | /** @noinspection PhpUnnecessaryFullyQualifiedNameInspection */ |
197 | 223 | $schemaFactory = new \Neomerx\JsonApi\Schema\SchemaFactory(); |
198 | | - $container = $schemaFactory->createContainer($schemas); |
199 | 224 | /** @noinspection PhpUnnecessaryFullyQualifiedNameInspection */ |
200 | 225 | $documentFactory = new \Neomerx\JsonApi\Document\DocumentFactory(); |
201 | 226 | /** @noinspection PhpUnnecessaryFullyQualifiedNameInspection */ |
202 | | - $encoderFactory = new \Neomerx\JsonApi\Encoder\Factory\EncoderFactory(); |
| 227 | + $parserFactory = $handlerFactory = new \Neomerx\JsonApi\Encoder\Factory\EncoderFactory(); |
203 | 228 | /** @noinspection PhpUnnecessaryFullyQualifiedNameInspection */ |
204 | 229 | $parameterFactory = new \Neomerx\JsonApi\Parameters\ParametersFactory(); |
205 | 230 |
|
206 | | - return new self( |
207 | | - $documentFactory, |
208 | | - $encoderFactory, |
209 | | - $encoderFactory, |
210 | | - $parameterFactory, |
211 | | - $container, |
212 | | - $encodeOptions |
213 | | - ); |
| 231 | + return [$schemaFactory, $documentFactory, $parserFactory, $handlerFactory, $parameterFactory]; |
214 | 232 | } |
215 | 233 |
|
216 | 234 | /** |
|
0 commit comments