diff --git a/CacheWarmer/ConfigBuilderCacheWarmer.php b/CacheWarmer/ConfigBuilderCacheWarmer.php index 0ed0a9382..ccd3cc9d1 100644 --- a/CacheWarmer/ConfigBuilderCacheWarmer.php +++ b/CacheWarmer/ConfigBuilderCacheWarmer.php @@ -42,7 +42,7 @@ public function __construct(KernelInterface $kernel, LoggerInterface $logger = n */ public function warmUp(string $cacheDir): array { - $generator = new ConfigBuilderGenerator($cacheDir); + $generator = new ConfigBuilderGenerator($this->kernel->getBuildDir()); foreach ($this->kernel->getBundles() as $bundle) { $extension = $bundle->getContainerExtension(); diff --git a/Console/Descriptor/MarkdownDescriptor.php b/Console/Descriptor/MarkdownDescriptor.php index 7423a2855..42574a80a 100644 --- a/Console/Descriptor/MarkdownDescriptor.php +++ b/Console/Descriptor/MarkdownDescriptor.php @@ -254,7 +254,7 @@ protected function describeContainerDefinition(Definition $definition, array $op foreach ($tagData as $parameters) { $output .= "\n".'- Tag: `'.$tagName.'`'; foreach ($parameters as $name => $value) { - $output .= "\n".' - '.ucfirst($name).': '.$value; + $output .= "\n".' - '.ucfirst($name).': '.(\is_array($value) ? $this->formatParameter($value) : $value); } } } diff --git a/Console/Descriptor/TextDescriptor.php b/Console/Descriptor/TextDescriptor.php index 06afc5cea..444f3b512 100644 --- a/Console/Descriptor/TextDescriptor.php +++ b/Console/Descriptor/TextDescriptor.php @@ -209,6 +209,10 @@ protected function describeContainerServices(ContainerBuilder $container, array if (!isset($maxTags[$key])) { $maxTags[$key] = \strlen($key); } + if (\is_array($value)) { + $value = $this->formatParameter($value); + } + if (\strlen($value) > $maxTags[$key]) { $maxTags[$key] = \strlen($value); } @@ -233,7 +237,11 @@ protected function describeContainerServices(ContainerBuilder $container, array foreach ($this->sortByPriority($definition->getTag($showTag)) as $key => $tag) { $tagValues = []; foreach ($tagsNames as $tagName) { - $tagValues[] = $tag[$tagName] ?? ''; + if (\is_array($tagValue = $tag[$tagName] ?? '')) { + $tagValue = $this->formatParameter($tagValue); + } + + $tagValues[] = $tagValue; } if (0 === $key) { $tableRows[] = array_merge([$serviceId], $tagValues, [$definition->getClass()]); @@ -275,7 +283,7 @@ protected function describeContainerDefinition(Definition $definition, array $op $tagInformation = []; foreach ($tags as $tagName => $tagData) { foreach ($tagData as $tagParameters) { - $parameters = array_map(fn ($key, $value) => sprintf('%s: %s', $key, $value), array_keys($tagParameters), array_values($tagParameters)); + $parameters = array_map(fn ($key, $value) => sprintf('%s: %s', $key, \is_array($value) ? $this->formatParameter($value) : $value), array_keys($tagParameters), array_values($tagParameters)); $parameters = implode(', ', $parameters); if ('' === $parameters) { diff --git a/DependencyInjection/FrameworkExtension.php b/DependencyInjection/FrameworkExtension.php index a1f23a837..7f56245a4 100644 --- a/DependencyInjection/FrameworkExtension.php +++ b/DependencyInjection/FrameworkExtension.php @@ -1867,6 +1867,10 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder $container->removeDefinition('serializer.normalizer.mime_message'); } + if ($container->getParameter('kernel.debug')) { + $container->removeDefinition('serializer.mapping.cache_class_metadata_factory'); + } + // compat with Symfony < 6.3 if (!is_subclass_of(ProblemNormalizer::class, SerializerAwareInterface::class)) { $container->getDefinition('serializer.normalizer.problem') @@ -1875,10 +1879,6 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder $serializerLoaders = []; if (isset($config['enable_annotations']) && $config['enable_annotations']) { - if ($container->getParameter('kernel.debug')) { - $container->removeDefinition('serializer.mapping.cache_class_metadata_factory'); - } - $annotationLoader = new Definition( AnnotationLoader::class, [new Reference('annotation_reader', ContainerInterface::NULL_ON_INVALID_REFERENCE)] @@ -2098,6 +2098,16 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder $container->getDefinition('messenger.transport.beanstalkd.factory')->addTag('messenger.transport_factory'); } + if ($config['stop_worker_on_signals'] && $this->hasConsole()) { + $container->getDefinition('console.command.messenger_consume_messages') + ->replaceArgument(8, $config['stop_worker_on_signals']); + $container->getDefinition('console.command.messenger_failed_messages_retry') + ->replaceArgument(6, $config['stop_worker_on_signals']); + } + + if ($this->hasConsole() && $container->hasDefinition('messenger.listener.stop_worker_signals_listener')) { + $container->getDefinition('messenger.listener.stop_worker_signals_listener')->clearTag('kernel.event_subscriber'); + } if ($config['stop_worker_on_signals']) { $container->getDefinition('messenger.listener.stop_worker_signals_listener')->replaceArgument(0, $config['stop_worker_on_signals']); } diff --git a/Resources/config/console.php b/Resources/config/console.php index 2be737e98..b49ed07a0 100644 --- a/Resources/config/console.php +++ b/Resources/config/console.php @@ -163,6 +163,7 @@ service('messenger.listener.reset_services')->nullOnInvalid(), [], // Bus names service('messenger.rate_limiter_locator')->nullOnInvalid(), + null, ]) ->tag('console.command') ->tag('monolog.logger', ['channel' => 'messenger']) @@ -194,6 +195,7 @@ service('event_dispatcher'), service('logger')->nullOnInvalid(), service('messenger.transport.native_php_serializer')->nullOnInvalid(), + null, ]) ->tag('console.command') ->tag('monolog.logger', ['channel' => 'messenger']) diff --git a/Resources/config/schema/symfony-1.0.xsd b/Resources/config/schema/symfony-1.0.xsd index 324c41b3e..fe9d43d62 100644 --- a/Resources/config/schema/symfony-1.0.xsd +++ b/Resources/config/schema/symfony-1.0.xsd @@ -237,6 +237,7 @@ + diff --git a/Tests/CacheWarmer/ConfigBuilderCacheWarmerTest.php b/Tests/CacheWarmer/ConfigBuilderCacheWarmerTest.php new file mode 100644 index 000000000..1336caed3 --- /dev/null +++ b/Tests/CacheWarmer/ConfigBuilderCacheWarmerTest.php @@ -0,0 +1,82 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bundle\FrameworkBundle\Tests\CacheWarmer; + +use Symfony\Bundle\FrameworkBundle\CacheWarmer\ConfigBuilderCacheWarmer; +use Symfony\Bundle\FrameworkBundle\FrameworkBundle; +use Symfony\Bundle\FrameworkBundle\Tests\TestCase; +use Symfony\Component\Config\Loader\LoaderInterface; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\Filesystem\Filesystem; +use Symfony\Component\HttpKernel\Kernel; + +class ConfigBuilderCacheWarmerTest extends TestCase +{ + private $varDir; + + protected function setUp(): void + { + $this->varDir = sys_get_temp_dir().'/'.uniqid(); + $fs = new Filesystem(); + $fs->mkdir($this->varDir); + } + + protected function tearDown(): void + { + $fs = new Filesystem(); + $fs->remove($this->varDir); + unset($this->varDir); + } + + public function testBuildDirIsUsedAsConfigBuilderOutputDir() + { + $kernel = new class($this->varDir) extends Kernel { + private $varDir; + + public function __construct(string $varDir) + { + parent::__construct('test', false); + + $this->varDir = $varDir; + } + + public function registerBundles(): iterable + { + yield new FrameworkBundle(); + } + + public function getBuildDir(): string + { + return $this->varDir.'/build'; + } + + public function getCacheDir(): string + { + return $this->varDir.'/cache'; + } + + public function registerContainerConfiguration(LoaderInterface $loader): void + { + $loader->load(static function (ContainerBuilder $container) { + $container->loadFromExtension('framework', ['http_method_override' => false]); + }); + } + }; + $kernel->boot(); + + $warmer = new ConfigBuilderCacheWarmer($kernel); + $warmer->warmUp($kernel->getCacheDir()); + + self::assertDirectoryExists($kernel->getBuildDir().'/Symfony'); + self::assertDirectoryDoesNotExist($kernel->getCacheDir().'/Symfony'); + } +} diff --git a/Tests/Console/Descriptor/ObjectsProvider.php b/Tests/Console/Descriptor/ObjectsProvider.php index daafc6011..cc9cfad68 100644 --- a/Tests/Console/Descriptor/ObjectsProvider.php +++ b/Tests/Console/Descriptor/ObjectsProvider.php @@ -169,6 +169,7 @@ public static function getContainerDefinitions() ->addTag('tag1', ['attr1' => 'val1', 'attr2' => 'val2']) ->addTag('tag1', ['attr3' => 'val3']) ->addTag('tag2') + ->addTag('tag3', ['array_attr' => ['foo', 'bar', [[[['ccc']]]]]]) ->addMethodCall('setMailer', [new Reference('mailer')]) ->setFactory([new Reference('factory.service'), 'get']), '.definition_3' => $definition3 diff --git a/Tests/DependencyInjection/FrameworkExtensionTestCase.php b/Tests/DependencyInjection/FrameworkExtensionTestCase.php index 97831b04e..e86cc3975 100644 --- a/Tests/DependencyInjection/FrameworkExtensionTestCase.php +++ b/Tests/DependencyInjection/FrameworkExtensionTestCase.php @@ -1572,6 +1572,12 @@ public function testSerializerCacheActivated() public function testSerializerCacheUsedWithoutAnnotationsAndMappingFiles() { $container = $this->createContainerFromFile('serializer_mapping_without_annotations', ['kernel.debug' => true, 'kernel.container_class' => __CLASS__]); + $this->assertFalse($container->hasDefinition('serializer.mapping.cache_class_metadata_factory')); + } + + public function testSerializerCacheUsedWithoutAnnotationsAndMappingFilesNoDebug() + { + $container = $this->createContainerFromFile('serializer_mapping_without_annotations', ['kernel.debug' => false, 'kernel.container_class' => __CLASS__]); $this->assertTrue($container->hasDefinition('serializer.mapping.cache_class_metadata_factory')); } diff --git a/Tests/Fixtures/Descriptor/alias_with_definition_2.json b/Tests/Fixtures/Descriptor/alias_with_definition_2.json index 419ee6786..f3b930983 100644 --- a/Tests/Fixtures/Descriptor/alias_with_definition_2.json +++ b/Tests/Fixtures/Descriptor/alias_with_definition_2.json @@ -36,6 +36,24 @@ { "name": "tag2", "parameters": [] + }, + { + "name": "tag3", + "parameters": { + "array_attr": [ + "foo", + "bar", + [ + [ + [ + [ + "ccc" + ] + ] + ] + ] + ] + } } ], "usages": [ diff --git a/Tests/Fixtures/Descriptor/alias_with_definition_2.md b/Tests/Fixtures/Descriptor/alias_with_definition_2.md index d25978492..3ec9516a3 100644 --- a/Tests/Fixtures/Descriptor/alias_with_definition_2.md +++ b/Tests/Fixtures/Descriptor/alias_with_definition_2.md @@ -24,4 +24,6 @@ - Tag: `tag1` - Attr3: val3 - Tag: `tag2` +- Tag: `tag3` + - Array_attr: ["foo","bar",[[[["ccc"]]]]] - Usages: .alias_2 diff --git a/Tests/Fixtures/Descriptor/alias_with_definition_2.txt b/Tests/Fixtures/Descriptor/alias_with_definition_2.txt index 6ab25c269..46699413a 100644 --- a/Tests/Fixtures/Descriptor/alias_with_definition_2.txt +++ b/Tests/Fixtures/Descriptor/alias_with_definition_2.txt @@ -3,24 +3,26 @@ Information for Service ".service_2" ==================================== - ----------------- --------------------------------- -  Option   Value  - ----------------- --------------------------------- - Service ID .service_2 - Class Full\Qualified\Class2 - Tags tag1 (attr1: val1, attr2: val2) - tag1 (attr3: val3) - tag2 - Calls setMailer - Public no - Synthetic yes - Lazy no - Shared yes - Abstract no - Autowired no - Autoconfigured no - Required File /path/to/file - Factory Service factory.service - Factory Method get - Usages .alias_2 - ----------------- --------------------------------- + ----------------- ------------------------------------------------ +  Option   Value  + ----------------- ------------------------------------------------ + Service ID .service_2 + Class Full\Qualified\Class2 + Tags tag1 (attr1: val1, attr2: val2) + tag1 (attr3: val3) + tag2 + tag3 (array_attr: ["foo","bar",[[[["ccc"]]]]]) + Calls setMailer + Public no + Synthetic yes + Lazy no + Shared yes + Abstract no + Autowired no + Autoconfigured no + Required File /path/to/file + Factory Service factory.service + Factory Method get + Usages .alias_2 + ----------------- ------------------------------------------------ + diff --git a/Tests/Fixtures/Descriptor/alias_with_definition_2.xml b/Tests/Fixtures/Descriptor/alias_with_definition_2.xml index f9d5c70c8..aee83ef82 100644 --- a/Tests/Fixtures/Descriptor/alias_with_definition_2.xml +++ b/Tests/Fixtures/Descriptor/alias_with_definition_2.xml @@ -14,6 +14,9 @@ val3 + + ["foo","bar",[[[["ccc"]]]]] + .alias_2 diff --git a/Tests/Fixtures/Descriptor/builder_1_services.json b/Tests/Fixtures/Descriptor/builder_1_services.json index 9bb716e44..ac6d122ce 100644 --- a/Tests/Fixtures/Descriptor/builder_1_services.json +++ b/Tests/Fixtures/Descriptor/builder_1_services.json @@ -33,6 +33,24 @@ { "name": "tag2", "parameters": [] + }, + { + "name": "tag3", + "parameters": { + "array_attr": [ + "foo", + "bar", + [ + [ + [ + [ + "ccc" + ] + ] + ] + ] + ] + } } ], "usages": [] diff --git a/Tests/Fixtures/Descriptor/builder_1_services.md b/Tests/Fixtures/Descriptor/builder_1_services.md index 3825ed8eb..6dfab327d 100644 --- a/Tests/Fixtures/Descriptor/builder_1_services.md +++ b/Tests/Fixtures/Descriptor/builder_1_services.md @@ -25,6 +25,8 @@ Definitions - Tag: `tag1` - Attr3: val3 - Tag: `tag2` +- Tag: `tag3` + - Array_attr: ["foo","bar",[[[["ccc"]]]]] - Usages: none ### .definition_3 diff --git a/Tests/Fixtures/Descriptor/builder_1_services.xml b/Tests/Fixtures/Descriptor/builder_1_services.xml index d3cf16a0f..84499f084 100644 --- a/Tests/Fixtures/Descriptor/builder_1_services.xml +++ b/Tests/Fixtures/Descriptor/builder_1_services.xml @@ -15,6 +15,9 @@ val3 + + ["foo","bar",[[[["ccc"]]]]] + diff --git a/Tests/Fixtures/Descriptor/builder_1_tag1.json b/Tests/Fixtures/Descriptor/builder_1_tag1.json index 66eb0af83..5e60f26d1 100644 --- a/Tests/Fixtures/Descriptor/builder_1_tag1.json +++ b/Tests/Fixtures/Descriptor/builder_1_tag1.json @@ -33,6 +33,24 @@ { "name": "tag2", "parameters": [] + }, + { + "name": "tag3", + "parameters": { + "array_attr": [ + "foo", + "bar", + [ + [ + [ + [ + "ccc" + ] + ] + ] + ] + ] + } } ], "usages": [] diff --git a/Tests/Fixtures/Descriptor/builder_1_tag1.md b/Tests/Fixtures/Descriptor/builder_1_tag1.md index a76b77df0..aeae0d9f2 100644 --- a/Tests/Fixtures/Descriptor/builder_1_tag1.md +++ b/Tests/Fixtures/Descriptor/builder_1_tag1.md @@ -25,4 +25,6 @@ Definitions - Tag: `tag1` - Attr3: val3 - Tag: `tag2` +- Tag: `tag3` + - Array_attr: ["foo","bar",[[[["ccc"]]]]] - Usages: none diff --git a/Tests/Fixtures/Descriptor/builder_1_tag1.xml b/Tests/Fixtures/Descriptor/builder_1_tag1.xml index b2929b01a..5413d7e5e 100644 --- a/Tests/Fixtures/Descriptor/builder_1_tag1.xml +++ b/Tests/Fixtures/Descriptor/builder_1_tag1.xml @@ -14,6 +14,9 @@ val3 + + ["foo","bar",[[[["ccc"]]]]] + diff --git a/Tests/Fixtures/Descriptor/builder_1_tags.json b/Tests/Fixtures/Descriptor/builder_1_tags.json index e0679f2ca..518f694ea 100644 --- a/Tests/Fixtures/Descriptor/builder_1_tags.json +++ b/Tests/Fixtures/Descriptor/builder_1_tags.json @@ -38,5 +38,25 @@ ], "usages": [] } + ], + "tag3": [ + { + "class": "Full\\Qualified\\Class2", + "public": false, + "synthetic": true, + "lazy": false, + "shared": true, + "abstract": false, + "autowire": false, + "autoconfigure": false, + "deprecated": false, + "file": "\/path\/to\/file", + "factory_service": "factory.service", + "factory_method": "get", + "calls": [ + "setMailer" + ], + "usages": [] + } ] } diff --git a/Tests/Fixtures/Descriptor/builder_1_tags.md b/Tests/Fixtures/Descriptor/builder_1_tags.md index f9558d326..80da2ddaf 100644 --- a/Tests/Fixtures/Descriptor/builder_1_tags.md +++ b/Tests/Fixtures/Descriptor/builder_1_tags.md @@ -41,3 +41,24 @@ tag2 - Factory Method: `get` - Call: `setMailer` - Usages: none + + +tag3 +---- + +### .definition_2 + +- Class: `Full\Qualified\Class2` +- Public: no +- Synthetic: yes +- Lazy: no +- Shared: yes +- Abstract: no +- Autowired: no +- Autoconfigured: no +- Deprecated: no +- File: `/path/to/file` +- Factory Service: `factory.service` +- Factory Method: `get` +- Call: `setMailer` +- Usages: none diff --git a/Tests/Fixtures/Descriptor/builder_1_tags.txt b/Tests/Fixtures/Descriptor/builder_1_tags.txt index b10e4661f..5be3bb079 100644 --- a/Tests/Fixtures/Descriptor/builder_1_tags.txt +++ b/Tests/Fixtures/Descriptor/builder_1_tags.txt @@ -12,3 +12,8 @@ * .definition_2 +"tag3" tag +---------- + + * .definition_2 + diff --git a/Tests/Fixtures/Descriptor/builder_1_tags.xml b/Tests/Fixtures/Descriptor/builder_1_tags.xml index 75a9714f5..1c68779f0 100644 --- a/Tests/Fixtures/Descriptor/builder_1_tags.xml +++ b/Tests/Fixtures/Descriptor/builder_1_tags.xml @@ -16,4 +16,12 @@ + + + + + + + + diff --git a/Tests/Fixtures/Descriptor/definition_2.json b/Tests/Fixtures/Descriptor/definition_2.json index 622904da2..a661428c9 100644 --- a/Tests/Fixtures/Descriptor/definition_2.json +++ b/Tests/Fixtures/Descriptor/definition_2.json @@ -31,6 +31,24 @@ { "name": "tag2", "parameters": [] + }, + { + "name": "tag3", + "parameters": { + "array_attr": [ + "foo", + "bar", + [ + [ + [ + [ + "ccc" + ] + ] + ] + ] + ] + } } ], "usages": [] diff --git a/Tests/Fixtures/Descriptor/definition_2.md b/Tests/Fixtures/Descriptor/definition_2.md index 376cbdb52..486f35fb7 100644 --- a/Tests/Fixtures/Descriptor/definition_2.md +++ b/Tests/Fixtures/Descriptor/definition_2.md @@ -17,4 +17,6 @@ - Tag: `tag1` - Attr3: val3 - Tag: `tag2` +- Tag: `tag3` + - Array_attr: ["foo","bar",[[[["ccc"]]]]] - Usages: none diff --git a/Tests/Fixtures/Descriptor/definition_2.txt b/Tests/Fixtures/Descriptor/definition_2.txt index 2b8d3dde5..6fdb6d980 100644 --- a/Tests/Fixtures/Descriptor/definition_2.txt +++ b/Tests/Fixtures/Descriptor/definition_2.txt @@ -1,22 +1,23 @@ - ----------------- --------------------------------- -  Option   Value  - ----------------- --------------------------------- - Service ID - - Class Full\Qualified\Class2 - Tags tag1 (attr1: val1, attr2: val2) - tag1 (attr3: val3) - tag2 - Calls setMailer - Public no - Synthetic yes - Lazy no - Shared yes - Abstract no - Autowired no - Autoconfigured no - Required File /path/to/file - Factory Service factory.service - Factory Method get - Usages none - ----------------- --------------------------------- + ----------------- ------------------------------------------------ +  Option   Value  + ----------------- ------------------------------------------------ + Service ID - + Class Full\Qualified\Class2 + Tags tag1 (attr1: val1, attr2: val2) + tag1 (attr3: val3) + tag2 + tag3 (array_attr: ["foo","bar",[[[["ccc"]]]]]) + Calls setMailer + Public no + Synthetic yes + Lazy no + Shared yes + Abstract no + Autowired no + Autoconfigured no + Required File /path/to/file + Factory Service factory.service + Factory Method get + Usages none + ----------------- ------------------------------------------------ diff --git a/Tests/Fixtures/Descriptor/definition_2.xml b/Tests/Fixtures/Descriptor/definition_2.xml index ab072f3e3..4dd3ca0a0 100644 --- a/Tests/Fixtures/Descriptor/definition_2.xml +++ b/Tests/Fixtures/Descriptor/definition_2.xml @@ -13,5 +13,8 @@ val3 + + ["foo","bar",[[[["ccc"]]]]] + diff --git a/Tests/Fixtures/Descriptor/definition_arguments_2.json b/Tests/Fixtures/Descriptor/definition_arguments_2.json index 20ef01a34..eeeb6f44a 100644 --- a/Tests/Fixtures/Descriptor/definition_arguments_2.json +++ b/Tests/Fixtures/Descriptor/definition_arguments_2.json @@ -32,6 +32,24 @@ { "name": "tag2", "parameters": [] + }, + { + "name": "tag3", + "parameters": { + "array_attr": [ + "foo", + "bar", + [ + [ + [ + [ + "ccc" + ] + ] + ] + ] + ] + } } ], "usages": [] diff --git a/Tests/Fixtures/Descriptor/definition_arguments_2.md b/Tests/Fixtures/Descriptor/definition_arguments_2.md index f5bf50e61..5b427bff5 100644 --- a/Tests/Fixtures/Descriptor/definition_arguments_2.md +++ b/Tests/Fixtures/Descriptor/definition_arguments_2.md @@ -18,4 +18,6 @@ - Tag: `tag1` - Attr3: val3 - Tag: `tag2` +- Tag: `tag3` + - Array_attr: ["foo","bar",[[[["ccc"]]]]] - Usages: none diff --git a/Tests/Fixtures/Descriptor/definition_arguments_2.txt b/Tests/Fixtures/Descriptor/definition_arguments_2.txt index 2b8d3dde5..43ca2cffa 100644 --- a/Tests/Fixtures/Descriptor/definition_arguments_2.txt +++ b/Tests/Fixtures/Descriptor/definition_arguments_2.txt @@ -1,22 +1,23 @@ - ----------------- --------------------------------- -  Option   Value  - ----------------- --------------------------------- - Service ID - - Class Full\Qualified\Class2 - Tags tag1 (attr1: val1, attr2: val2) - tag1 (attr3: val3) - tag2 - Calls setMailer - Public no - Synthetic yes - Lazy no - Shared yes - Abstract no - Autowired no - Autoconfigured no - Required File /path/to/file - Factory Service factory.service - Factory Method get - Usages none - ----------------- --------------------------------- + ----------------- ------------------------------------------------ +  Option   Value  + ----------------- ------------------------------------------------ + Service ID - + Class Full\Qualified\Class2 + Tags tag1 (attr1: val1, attr2: val2) + tag1 (attr3: val3) + tag2 + tag3 (array_attr: ["foo","bar",[[[["ccc"]]]]]) + Calls setMailer + Public no + Synthetic yes + Lazy no + Shared yes + Abstract no + Autowired no + Autoconfigured no + Required File /path/to/file + Factory Service factory.service + Factory Method get + Usages none + ----------------- ------------------------------------------------ diff --git a/Tests/Fixtures/Descriptor/definition_arguments_2.xml b/Tests/Fixtures/Descriptor/definition_arguments_2.xml index ab072f3e3..4dd3ca0a0 100644 --- a/Tests/Fixtures/Descriptor/definition_arguments_2.xml +++ b/Tests/Fixtures/Descriptor/definition_arguments_2.xml @@ -13,5 +13,8 @@ val3 + + ["foo","bar",[[[["ccc"]]]]] +