99use ArrayObject ;
1010use Doctrine \ORM \EntityManager ;
1111use League \Event \EventDispatcher ;
12+ use ReflectionClass ;
1213
1314/**
1415 * This trait is used to remove complexity from the Driver class.
@@ -41,7 +42,12 @@ static function () use ($config) {
4142 ->set (Type \TypeContainer::class, static fn () => new Type \TypeContainer ())
4243 ->set (
4344 Type \Entity \EntityTypeContainer::class,
44- static fn (Container $ container ) => new Type \Entity \EntityTypeContainer ($ container ),
45+ static function (Container $ container ): Type \Entity \EntityTypeContainer {
46+ return (new ReflectionClass (Type \Entity \EntityTypeContainer::class))
47+ ->newLazyGhost (static function (Type \Entity \EntityTypeContainer $ object ) use ($ container ): void {
48+ $ object ->__construct ($ container );
49+ });
50+ },
4551 )
4652 ->set (
4753 'metadata ' ,
@@ -57,77 +63,98 @@ static function (Container $container) use ($metadata) {
5763 )
5864 ->set (
5965 Metadata \GlobalEnable::class,
60- static function (Container $ container ) {
61- return new Metadata \GlobalEnable (
62- $ container ->get (EntityManager::class),
63- $ container ->get (Config::class),
64- $ container ->get (EventDispatcher::class),
65- );
66+ static function (Container $ container ): Metadata \GlobalEnable {
67+ return (new ReflectionClass (Metadata \GlobalEnable::class))
68+ ->newLazyGhost (static function (Metadata \GlobalEnable $ object ) use ($ container ): void {
69+ $ object ->__construct (
70+ $ container ->get (EntityManager::class),
71+ $ container ->get (Config::class),
72+ $ container ->get (EventDispatcher::class),
73+ );
74+ });
6675 },
6776 )
6877 ->set (
6978 Resolve \FieldResolver::class,
70- static function (Container $ container ) {
71- return new Resolve \FieldResolver (
72- $ container ->get (Config::class),
73- $ container ->get (Type \Entity \EntityTypeContainer::class),
74- );
79+ static function (Container $ container ): Resolve \FieldResolver {
80+ return (new ReflectionClass (Resolve \FieldResolver::class))
81+ ->newLazyGhost (static function (Resolve \FieldResolver $ object ) use ($ container ): void {
82+ $ object ->__construct (
83+ $ container ->get (Config::class),
84+ $ container ->get (Type \Entity \EntityTypeContainer::class),
85+ );
86+ });
7587 },
7688 )
7789 ->set (
7890 Resolve \ResolveCollectionFactory::class,
79- static function (Container $ container ) {
80- return new Resolve \ResolveCollectionFactory (
81- $ container ->get (EntityManager::class),
82- $ container ->get (Config::class),
83- $ container ->get (Resolve \FieldResolver::class),
84- $ container ->get (Type \TypeContainer::class),
85- $ container ->get (EntityTypeContainer::class),
86- $ container ->get (EventDispatcher::class),
87- $ container ->get ('metadata ' ),
88- );
91+ static function (Container $ container ): Resolve \ResolveCollectionFactory {
92+ return (new ReflectionClass (Resolve \ResolveCollectionFactory::class))
93+ ->newLazyGhost (static function (Resolve \ResolveCollectionFactory $ object ) use ($ container ): void {
94+ $ object ->__construct (
95+ $ container ->get (EntityManager::class),
96+ $ container ->get (Config::class),
97+ $ container ->get (Resolve \FieldResolver::class),
98+ $ container ->get (Type \TypeContainer::class),
99+ $ container ->get (EntityTypeContainer::class),
100+ $ container ->get (EventDispatcher::class),
101+ $ container ->get ('metadata ' ),
102+ );
103+ });
89104 },
90105 )
91106 ->set (
92107 Resolve \ResolveEntityFactory::class,
93- static function (Container $ container ) {
94- return new Resolve \ResolveEntityFactory (
95- $ container ->get (Config::class),
96- $ container ->get (EntityManager::class),
97- $ container ->get (EventDispatcher::class),
98- $ container ->get ('metadata ' ),
99- );
108+ static function (Container $ container ): Resolve \ResolveEntityFactory {
109+ return (new ReflectionClass (Resolve \ResolveEntityFactory::class))
110+ ->newLazyGhost (static function (Resolve \ResolveEntityFactory $ object ) use ($ container ): void {
111+ $ object ->__construct (
112+ $ container ->get (Config::class),
113+ $ container ->get (EntityManager::class),
114+ $ container ->get (EventDispatcher::class),
115+ $ container ->get ('metadata ' ),
116+ );
117+ });
100118 },
101119 )
102120 ->set (
103121 Filter \FilterFactory::class,
104- static function (Container $ container ) {
105- return new Filter \FilterFactory (
106- $ container ->get (Config::class),
107- $ container ->get (EntityManager::class),
108- $ container ->get (Type \TypeContainer::class),
109- $ container ->get (EventDispatcher::class),
110- );
122+ static function (Container $ container ): Filter \FilterFactory {
123+ return (new ReflectionClass (Filter \FilterFactory::class))
124+ ->newLazyGhost (static function (Filter \FilterFactory $ object ) use ($ container ): void {
125+ $ object ->__construct (
126+ $ container ->get (Config::class),
127+ $ container ->get (EntityManager::class),
128+ $ container ->get (Type \TypeContainer::class),
129+ $ container ->get (EventDispatcher::class),
130+ );
131+ });
111132 },
112133 )
113134 ->set (
114135 Hydrator \HydratorContainer::class,
115- static function (Container $ container ) {
116- return new Hydrator \HydratorContainer (
117- $ container ->get (EntityManager::class),
118- $ container ->get (Type \Entity \EntityTypeContainer::class),
119- );
136+ static function (Container $ container ): Hydrator \HydratorContainer {
137+ return (new ReflectionClass (Hydrator \HydratorContainer::class))
138+ ->newLazyGhost (static function (Hydrator \HydratorContainer $ object ) use ($ container ): void {
139+ $ object ->__construct (
140+ $ container ->get (EntityManager::class),
141+ $ container ->get (Type \Entity \EntityTypeContainer::class),
142+ );
143+ });
120144 },
121145 )
122146 ->set (
123147 Input \InputFactory::class,
124- static function (Container $ container ) {
125- return new Input \InputFactory (
126- $ container ->get (Config::class),
127- $ container ->get (EntityManager::class),
128- $ container ->get (Type \Entity \EntityTypeContainer::class),
129- $ container ->get (Type \TypeContainer::class),
130- );
148+ static function (Container $ container ): Input \InputFactory {
149+ return (new ReflectionClass (Input \InputFactory::class))
150+ ->newLazyGhost (static function (Input \InputFactory $ object ) use ($ container ): void {
151+ $ object ->__construct (
152+ $ container ->get (Config::class),
153+ $ container ->get (EntityManager::class),
154+ $ container ->get (Type \Entity \EntityTypeContainer::class),
155+ $ container ->get (Type \TypeContainer::class),
156+ );
157+ });
131158 },
132159 );
133160 }
0 commit comments