@@ 16-36 (lines=21) @@ | ||
13 | /** |
|
14 | * @test |
|
15 | */ |
|
16 | public function it_resolves_cross_container_references_in_service_argument() |
|
17 | { |
|
18 | $externalContainer = new ContainerBuilder(); |
|
19 | $externalContainer->setDefinition('array_object', new Definition(\ArrayObject::class, [['foo' => 'bar']])); |
|
20 | $externalContainer->compile(); |
|
21 | ||
22 | $baseContainer = new ContainerBuilder(); |
|
23 | $baseContainer->setDefinition('array_object', new Definition(\ArrayObject::class, [ |
|
24 | new Reference('__external__.array_object'), |
|
25 | ])); |
|
26 | ||
27 | (new ResolveCrossContainerReferencesPass([ |
|
28 | 'external' => new ContainerBasedContainerAccessor($externalContainer), |
|
29 | ]))->process($baseContainer); |
|
30 | ||
31 | $baseContainer->compile(); |
|
32 | ||
33 | static::assertTrue($baseContainer->has('array_object')); |
|
34 | static::assertInstanceOf(\ArrayObject::class, $baseContainer->get('array_object')); |
|
35 | static::assertSame(['foo' => 'bar'], $baseContainer->get('array_object')->getArrayCopy()); |
|
36 | } |
|
37 | ||
38 | /** |
|
39 | * @test |
|
@@ 66-86 (lines=21) @@ | ||
63 | /** |
|
64 | * @test |
|
65 | */ |
|
66 | public function it_resolves_cross_container_references_in_service_argument_nested_array() |
|
67 | { |
|
68 | $externalContainer = new ContainerBuilder(); |
|
69 | $externalContainer->setDefinition('std_class', new Definition(\stdClass::class)); |
|
70 | $externalContainer->compile(); |
|
71 | ||
72 | $baseContainer = new ContainerBuilder(); |
|
73 | $baseContainer->setDefinition('array_object', new Definition(\ArrayObject::class, [ |
|
74 | ['std' => ['class' => new Reference('__external__.std_class')]], |
|
75 | ])); |
|
76 | ||
77 | (new ResolveCrossContainerReferencesPass([ |
|
78 | 'external' => new ContainerBasedContainerAccessor($externalContainer), |
|
79 | ]))->process($baseContainer); |
|
80 | ||
81 | $baseContainer->compile(); |
|
82 | ||
83 | static::assertTrue($baseContainer->has('array_object')); |
|
84 | static::assertInstanceOf(\ArrayObject::class, $baseContainer->get('array_object')); |
|
85 | static::assertInstanceOf(\stdClass::class, $baseContainer->get('array_object')['std']['class']); |
|
86 | } |
|
87 | ||
88 | /** |
|
89 | * @test |