1 | <?php |
||
2 | |||
3 | namespace Bankiru\Api; |
||
4 | |||
5 | use Bankiru\Api\Doctrine\ApiFactoryInterface; |
||
6 | use Bankiru\Api\Doctrine\ApiFactoryRegistryInterface; |
||
7 | use Bankiru\Api\Doctrine\Mapping\ApiMetadata; |
||
8 | use ScayTrase\Api\Rpc\RpcClientInterface; |
||
9 | use Symfony\Component\DependencyInjection\ContainerInterface; |
||
10 | |||
11 | final class ContainerApiFactory implements ApiFactoryRegistryInterface |
||
12 | { |
||
13 | /** @var ContainerInterface */ |
||
14 | private $container; |
||
15 | |||
16 | /** |
||
17 | * ContainerApiFactory constructor. |
||
18 | * |
||
19 | * @param ContainerInterface $container |
||
20 | */ |
||
21 | public function __construct(ContainerInterface $container) |
||
22 | { |
||
23 | $this->container = $container; |
||
24 | } |
||
25 | |||
26 | /** {@inheritdoc} */ |
||
27 | public function create($alias, RpcClientInterface $client, ApiMetadata $metadata) |
||
28 | { |
||
29 | /** @var ApiFactoryInterface $factory */ |
||
30 | $factory = $this->container->get($alias); |
||
31 | |||
32 | return $factory->createApi($client, $metadata); |
||
33 | } |
||
34 | |||
35 | /** {@inheritdoc} */ |
||
36 | public function has($alias) |
||
37 | { |
||
38 | return $this->container->has($alias) && $this->container->get($alias) instanceof ApiFactoryInterface; |
||
39 | } |
||
40 | } |
||
41 |