8000 Describe factory definition · symfony/symfony@e756908 · GitHub
[go: up one dir, main page]

Skip to content

Commit e756908

Browse files
committed
Describe factory definition
1 parent f91c198 commit e756908

17 files changed

+144
-12
lines changed

src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/JsonDescriptor.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,10 +218,10 @@ private function getContainerDefinitionData(Definition $definition, bool $omitTa
218218
if (\is_array($factory)) {
219219
if ($factory[0] instanceof Reference) {
220220
$data['factory_service'] = (string) $factory[0];
221-
} elseif ($factory[0] instanceof Definition) {
222-
throw new \InvalidArgumentException('Factory is not describable.');
223-
} else {
221+
} elseif (!$factory[0] instanceof Definition) {
224222
$data['factory_class'] = $factory[0];
223+
} elseif ($factoryClass = $factory[0]->getClass()) {
224+
$data['factory_class'] = $factoryClass;
225225
}
226226
$data['factory_method'] = $factory[1];
227227
} else {

src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/MarkdownDescriptor.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,10 @@ protected function describeContainerDefinition(Definition $definition, array $op
195195
if (\is_array($factory)) {
196196
if ($factory[0] instanceof Reference) {
197197
$output .= "\n".'- Factory Service: `'.$factory[0].'`';
198-
} elseif ($factory[0] instanceof Definition) {
199-
throw new \InvalidArgumentException('Factory is not describable.');
200-
} else {
198+
} elseif (!$factory[0] instanceof Definition) {
201199
$output .= "\n".'- Factory Class: `'.$factory[0].'`';
200+
} elseif ($factoryClass = $factory[0]->getClass()) {
201+
$output .= "\n".'- Factory Class: `'.$factoryClass.'`';
202202
}
203203
$output .= "\n".'- Factory Method: `'.$factory[1].'`';
204204
} else {

src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -308,10 +308,10 @@ protected function describeContainerDefinition(Definition $definition, array $op
308308
if (\is_array($factory)) {
309309
if ($factory[0] instanceof Reference) {
310310
$tableRows[] = ['Factory Service', $factory[0]];
311-
} elseif ($factory[0] instanceof Definition) {
312-
throw new \InvalidArgumentException('Factory is not describable.');
313-
} else {
311+
} elseif (!$factory[0] instanceof Definition) {
314312
$tableRows[] = ['Factory Class', $factory[0]];
313+
} elseif ($factoryClass = $factory[0]->getClass()) {
314+
$tableRows[] = ['Factory Class', $factoryClass];
315315
}
316316
$tableRows[] = ['Factory Method', $factory[1]];
317317
} else {

src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/XmlDescriptor.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -293,10 +293,10 @@ private function getContainerDefinitionDocument(Definition $definition, string $
293293
if (\is_array($factory)) {
294294
if ($factory[0] instanceof Reference) {
295295
$factoryXML->setAttribute('service', (string) $factory[0]);
296-
} elseif ($factory[0] instanceof Definition) {
297-
throw new \InvalidArgumentException('Factory is not describable.');
298-
} else {
296+
} elseif (!$factory[0] instanceof Definition) {
299297
$factoryXML->setAttribute('class', $factory[0]);
298+
} elseif ($factoryClass = $factory[0]->getClass()) {
299+
$factoryXML->setAttribute('class', $factoryClass);
300300
}
301301
$factoryXML->setAttribute('method', $factory[1]);
302302
} else {

src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/ObjectsProvider.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ public static function getContainerDefinitions()
123123
{
124124
$definition1 = new Definition('Full\\Qualified\\Class1');
125125
$definition2 = new Definition('Full\\Qualified\\Class2');
126+
$definition3 = new Definition('Full\\Qualified\\Class3');
126127

127128
return [
128129
'definition_1' => $definition1
@@ -154,6 +155,9 @@ public static function getContainerDefinitions()
154155
->addTag('tag2')
155156
->addMethodCall('setMailer', [new Reference('mailer')])
156157
->setFactory([new Reference('factory.service'), 'get']),
158+
'.definition_3' => $definition3
159+
->setFile('/path/to/file')
160+
->setFactory([new Definition('Full\\Qualified\\FactoryClass'), 'get']),
157161
'definition_without_class' => new Definition(),
158162
];
159163
}

src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_1_services.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,20 @@
3434
"parameters": []
3535
}
3636
]
37+
},
38+
".definition_3": {
39+
"class": "Full\\Qualified\\Class3",
40+
"public": false,
41+
"synthetic": false,
42+
"lazy": false,
43+
"shared": true,
44+
"abstract": false,
45+
"autowire": false,
46+
"autoconfigure": false,
47+
"file": "\/path\/to\/file",
48+
"factory_class": "Full\\Qualified\\FactoryClass",
49+
"factory_method": "get",
50+
"tags": []
3751
}
3852
},
3953
"aliases": {

src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_1_services.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,20 @@ Definitions
2525
- Attr3: val3
2626
- Tag: `tag2`
2727

28+
### .definition_3
29+
30+
- Class: `Full\Qualified\Class3`
31+
- Public: no
32+
- Synthetic: no
33+
- Lazy: no
34+
- Shared: yes
35+
- Abstract: no
36+
- Autowired: no
37+
- Autoconfigured: no
38+
- File: `/path/to/file`
39+
- Factory Class: `Full\Qualified\FactoryClass`
40+
- Factory Method: `get`
41+
2842

2943
Aliases
3044
-------

src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_1_services.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@
77
--------------- ------------------------
88
.alias_2 alias for ".service_2"
99
.definition_2 Full\Qualified\Class2
10+
.definition_3 Full\Qualified\Class3
1011
--------------- ------------------------
1112

src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_1_services.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,7 @@
1717
<tag name="tag2"/>
1818
</tags>
1919
</definition>
20+
<definition id=".definition_3" class="Full\Qualified\Class3" public="false" synthetic="false" lazy="false" shared="true" abstract="false" autowired="false" autoconfigured="false" file="/path/to/file">
21+
<factory class="Full\Qualified\FactoryClass" method="get"/>
22+
</definition>
2023
</container>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"class": "Full\\Qualified\\Class3",
3+
"public": false,
4+
"synthetic": false,
5+
"lazy": false,
6+
"shared": true,
7+
"abstract": false,
8+
"autowire": false,
9+
"autoconfigure": false,
10+
"file": "\/path\/to\/file",
11+
"factory_class": "Full\\Qualified\\FactoryClass",
12+
"factory_method": "get",
13+
"tags": []
14+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
- Class: `Full\Qualified\Class3`
2+
- Public: no
3+
- Synthetic: no
4+
- Lazy: no
5+
- Shared: yes
6+
- Abstract: no
7+
- Autowired: no
8+
- Autoconfigured: no
9+
- File: `/path/to/file`
10+
- Factory Class: `Full\Qualified\FactoryClass`
11+
- Factory Method: `get`
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---------------- -----------------------------
2+
 Option   Value 
3+
---------------- -----------------------------
4+
Service ID -
5+
Class Full\Qualified\Class3
6+
Tags -
7+
Public no
8+
Synthetic no
9+
Lazy no
10+
Shared yes
11+
Abstract no
12+
Autowired no
13+
Autoconfigured no
14+
Required File /path/to/file
15+
Factory Class Full\Qualified\FactoryClass
16+
Factory Method get
17+
---------------- -----------------------------
18+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<definition class="Full\Qualified\Class3" public="false" synthetic="false" lazy="false" shared="true" abstract="false" autowired="false" autoconfigured="false" file="/path/to/file">
3+
<factory class="Full\Qualified\FactoryClass" method="get"/>
4+
</definition>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"class": "Full\\Qualified\\Class3",
3+
"public": false,
4+
"synthetic": false,
5+
"lazy": false,
6+
"shared": true,
7+
"abstract": false,
8+
"autowire": false,
9+
"autoconfigure": false,
10+
"arguments": [],
11+
"file": "\/path\/to\/file",
12+
"factory_class": "Full\\Qualified\\FactoryClass",
13+
"factory_method": "get",
14+
"tags": []
15+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
- Class: `Full\Qualified\Class3`
2+
- Public: no
3+
- Synthetic: no
4+
- Lazy: no
5+
- Shared: yes
6+
- Abstract: no
7+
- Autowired: no
8+
- Autoconfigured: no
9+
- Arguments: no
10+
- File: `/path/to/file`
11+
- Factory Class: `Full\Qualified\FactoryClass`
12+
- Factory Method: `get`
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---------------- -----------------------------
2+
 Option   Value 
3+
---------------- -----------------------------
4+
Service ID -
5+
Class Full\Qualified\Class3
6+
Tags -
7+
Public no
8+
Synthetic no
9+
Lazy no
10+
Shared yes
11+
Abstract no
12+
Autowired no
13+
Autoconfigured no
14+
Required File /path/to/file
15+
Factory Class Full\Qualified\FactoryClass
16+
Factory Method get
17+
---------------- -----------------------------
18+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<definition class="Full\Qualified\Class3" public="false" synthetic="false" lazy="false" shared="true" abstract="false" autowired="false" autoconfigured="false" file="/path/to/file">
3+
<factory class="Full\Qualified\FactoryClass" method="get"/>
4+
</definition>

0 commit comments

Comments
 (0)
0