@@ 29-43 (lines=15) @@ | ||
26 | /** |
|
27 | * @test |
|
28 | */ |
|
29 | public function it_resolves_cross_container_references_in_service_argument(): void |
|
30 | { |
|
31 | $externalContainer = new ContainerBuilder(); |
|
32 | $externalContainer->setDefinition('array_object', (new Definition(\ArrayObject::class, [['foo' => 'bar']]))->setPublic(true)); |
|
33 | ||
34 | $baseContainer = new ContainerBuilder(); |
|
35 | $baseContainer->setDefinition('array_object', (new Definition(\ArrayObject::class, [ |
|
36 | new Reference('__external__.array_object'), |
|
37 | ]))->setPublic(true)); |
|
38 | ||
39 | $this->buildContainerWithDependencies($baseContainer, ['external' => $externalContainer]); |
|
40 | ||
41 | Assert::assertInstanceOf(\ArrayObject::class, $baseContainer->get('array_object')); |
|
42 | Assert::assertSame(['foo' => 'bar'], $baseContainer->get('array_object')->getArrayCopy()); |
|
43 | } |
|
44 | ||
45 | /** |
|
46 | * @test |
|
@@ 48-62 (lines=15) @@ | ||
45 | /** |
|
46 | * @test |
|
47 | */ |
|
48 | public function it_resolves_cross_container_references_in_service_argument_array(): void |
|
49 | { |
|
50 | $externalContainer = new ContainerBuilder(); |
|
51 | $externalContainer->setDefinition('std_class', (new Definition(\stdClass::class))->setPublic(true)); |
|
52 | ||
53 | $baseContainer = new ContainerBuilder(); |
|
54 | $baseContainer->setDefinition('array_object', (new Definition(\ArrayObject::class, [ |
|
55 | ['std' => ['class' => new Reference('__external__.std_class')]], |
|
56 | ]))->setPublic(true)); |
|
57 | ||
58 | $this->buildContainerWithDependencies($baseContainer, ['external' => $externalContainer]); |
|
59 | ||
60 | Assert::assertInstanceOf(\ArrayObject::class, $baseContainer->get('array_object')); |
|
61 | Assert::assertInstanceOf(\stdClass::class, $baseContainer->get('array_object')['std']['class']); |
|
62 | } |
|
63 | ||
64 | /** |
|
65 | * @test |
|
@@ 195-212 (lines=18) @@ | ||
192 | /** |
|
193 | * @test |
|
194 | */ |
|
195 | public function it_resolves_cross_container_references_in_method_calls(): void |
|
196 | { |
|
197 | $externalContainer = new ContainerBuilder(); |
|
198 | $externalContainer->setDefinition('array_object', (new Definition(\ArrayObject::class, [['foo' => 'bar']]))->setPublic(true)); |
|
199 | ||
200 | $baseContainer = new ContainerBuilder(); |
|
201 | $baseContainer->setDefinition( |
|
202 | 'array_object', |
|
203 | (new Definition(\ArrayObject::class, [[]])) |
|
204 | ->addMethodCall('exchangeArray', [new Reference('__external__.array_object')]) |
|
205 | ->setPublic(true) |
|
206 | ); |
|
207 | ||
208 | $this->buildContainerWithDependencies($baseContainer, ['external' => $externalContainer]); |
|
209 | ||
210 | Assert::assertInstanceOf(\ArrayObject::class, $baseContainer->get('array_object')); |
|
211 | Assert::assertSame(['foo' => 'bar'], $baseContainer->get('array_object')->getArrayCopy()); |
|
212 | } |
|
213 | ||
214 | /** |
|
215 | * @param ContainerBuilder $baseContainer |