Skip to content

Commit 417ad90

Browse files
committed
Closes #40. Intended usage
- Inherit `Container` and override `getResourceType` method - Inherit `SchemaFactory` and override `createContainer` method - Inherit `Encoder` and override `getFactories` method where `$schemaFactory` should return the new schema factory instance
1 parent 5d6c4c4 commit 417ad90

File tree

2 files changed

+39
-11
lines changed

2 files changed

+39
-11
lines changed

src/Encoder/Encoder.php

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
use \Neomerx\JsonApi\Contracts\Document\ErrorInterface;
2121
use \Neomerx\JsonApi\Contracts\Encoder\EncoderInterface;
2222
use \Neomerx\JsonApi\Contracts\Schema\ContainerInterface;
23+
use \Neomerx\JsonApi\Contracts\Schema\SchemaFactoryInterface;
2324
use \Neomerx\JsonApi\Contracts\Schema\SchemaProviderInterface;
2425
use \Neomerx\JsonApi\Contracts\Document\DocumentFactoryInterface;
2526
use \Neomerx\JsonApi\Contracts\Encoder\Parser\DataAnalyzerInterface;
@@ -192,25 +193,42 @@ protected function encodeToJson(array $document)
192193
* @return Encoder
193194
*/
194195
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()
195221
{
196222
/** @noinspection PhpUnnecessaryFullyQualifiedNameInspection */
197223
$schemaFactory = new \Neomerx\JsonApi\Schema\SchemaFactory();
198-
$container = $schemaFactory->createContainer($schemas);
199224
/** @noinspection PhpUnnecessaryFullyQualifiedNameInspection */
200225
$documentFactory = new \Neomerx\JsonApi\Document\DocumentFactory();
201226
/** @noinspection PhpUnnecessaryFullyQualifiedNameInspection */
202-
$encoderFactory = new \Neomerx\JsonApi\Encoder\Factory\EncoderFactory();
227+
$parserFactory = $handlerFactory = new \Neomerx\JsonApi\Encoder\Factory\EncoderFactory();
203228
/** @noinspection PhpUnnecessaryFullyQualifiedNameInspection */
204229
$parameterFactory = new \Neomerx\JsonApi\Parameters\ParametersFactory();
205230

206-
return new self(
207-
$documentFactory,
208-
$encoderFactory,
209-
$encoderFactory,
210-
$parameterFactory,
211-
$container,
212-
$encodeOptions
213-
);
231+
return [$schemaFactory, $documentFactory, $parserFactory, $handlerFactory, $parameterFactory];
214232
}
215233

216234
/**

src/Schema/Container.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public function registerArray(array $schemas)
8888
*/
8989
public function getSchema($resource)
9090
{
91-
$resourceType = get_class($resource);
91+
$resourceType = $this->getResourceType($resource);
9292

9393
if (isset($this->createdProviders[$resourceType])) {
9494
return $this->createdProviders[$resourceType];
@@ -105,4 +105,14 @@ public function getSchema($resource)
105105

106106
return $schema;
107107
}
108+
109+
/**
110+
* @param object $resource
111+
*
112+
* @return string
113+
*/
114+
protected function getResourceType($resource)
115+
{
116+
return get_class($resource);
117+
}
108118
}

0 commit comments

Comments
 (0)