Skip to content

Commit 38715fc

Browse files
authored
Merge pull request #386 from mcg-web/fix-generated-type-class-loader
Fix (#385) generated type class loader
2 parents 2fedef6 + 624f541 commit 38715fc

File tree

3 files changed

+43
-5
lines changed

3 files changed

+43
-5
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
namespace Overblog\GraphQLBundle\Definition\Builder;
4+
5+
use GraphQL\Type\Definition\Type;
6+
use Overblog\GraphQLBundle\Definition\ConfigProcessor;
7+
use Overblog\GraphQLBundle\Definition\GlobalVariables;
8+
9+
final class TypeFactory
10+
{
11+
/** @var ConfigProcessor */
12+
private $configProcessor;
13+
/** @var GlobalVariables */
14+
private $globalVariables;
15+
16+
public function __construct(ConfigProcessor $configProcessor, GlobalVariables $globalVariables)
17+
{
18+
$this->configProcessor = $configProcessor;
19+
$this->globalVariables = $globalVariables;
20+
}
21+
22+
/**
23+
* @param string $class
24+
*
25+
* @return Type
26+
*/
27+
public function create($class)
28+
{
29+
return new $class($this->configProcessor, $this->globalVariables);
30+
}
31+
}

src/DependencyInjection/Compiler/ConfigTypesPass.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
namespace Overblog\GraphQLBundle\DependencyInjection\Compiler;
44

5-
use Overblog\GraphQLBundle\Definition\ConfigProcessor;
6-
use Overblog\GraphQLBundle\Definition\GlobalVariables;
5+
use GraphQL\Type\Definition\Type;
76
use Overblog\GraphQLBundle\Generator\TypeGenerator;
87
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
98
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -25,9 +24,10 @@ public function process(ContainerBuilder $container)
2524

2625
private function setTypeServiceDefinition(ContainerBuilder $container, $class, $alias)
2726
{
28-
$definition = $container->setDefinition($class, new Definition($class));
27+
$definition = $container->setDefinition($class, new Definition(Type::class));
28+
$definition->setFactory([new Reference('overblog_graphql.type_factory'), 'create']);
2929
$definition->setPublic(false);
30-
$definition->setArguments([new Reference(ConfigProcessor::class), new Reference(GlobalVariables::class)]);
30+
$definition->setArguments([$class]);
3131
$definition->addTag(TypeTaggedServiceMappingPass::TAG_NAME, ['alias' => $alias, 'generated' => true]);
3232
}
3333
}

src/Resources/config/services.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@ services:
3535
- "@overblog_graphql.type_resolver"
3636
- false
3737

38+
overblog_graphql.type_factory:
39+
class: Overblog\GraphQLBundle\Definition\Builder\TypeFactory
40+
public: false
41+
arguments:
42+
- '@Overblog\GraphQLBundle\Definition\ConfigProcessor'
43+
- '@Overblog\GraphQLBundle\Definition\GlobalVariables'
44+
3845
overblog_graphql.type_resolver:
3946
class: Overblog\GraphQLBundle\Resolver\TypeResolver
4047
public: true
@@ -121,7 +128,7 @@ services:
121128
- "@overblog_graphql.request_parser"
122129
- "%overblog_graphql.handle_cors%"
123130
- "%overblog_graphql.batching_method%"
124-
131+
125132
Overblog\GraphQLBundle\Controller\GraphController:
126133
public: true
127134
alias: 'overblog_graphql.controller.graphql'

0 commit comments

Comments
 (0)