diff --git a/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php b/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php index 25cb14b193..b6a0f513f0 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php +++ b/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php @@ -741,7 +741,7 @@ class YamlFileLoader extends FileLoader throw new InvalidArgumentException(sprintf('"!%s" tag contains unsupported key "%s"; supported ones are "tag", "index_by" and "default_index_method".', $value->getTag(), implode('"", "', $diff))); } - $argument = new TaggedIteratorArgument($argument['tag'], $argument['index_by'], $argument['default_index_method'] ?? null, $forLocator); + $argument = new TaggedIteratorArgument($argument['tag'], $argument['index_by'] ?? null, $argument['default_index_method'] ?? null, $forLocator); if ($forLocator) { $argument = new ServiceLocatorArgument($argument); diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/tagged_iterator_optional.yml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/tagged_iterator_optional.yml new file mode 100644 index 0000000000..4694f543fd --- /dev/null +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/tagged_iterator_optional.yml @@ -0,0 +1,4 @@ +services: + iterator_service: + class: FooClass + arguments: [!tagged_iterator {tag: test.tag}] diff --git a/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php b/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php index adb2b925f3..5d7e6bf707 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php @@ -858,4 +858,18 @@ class YamlFileLoaderTest extends TestCase $this->assertSame('overridden', $container->get('bar')->quz); } + + /** + * When creating a tagged iterator using the array syntax, all optional parameters should be properly handled. + */ + public function testDefaultValueOfTagged() + { + $container = new ContainerBuilder(); + $loader = new YamlFileLoader($container, new FileLocator(self::$fixturesPath.'/yaml')); + $loader->load('tagged_iterator_optional.yml'); + + $iteratorArgument = $container->getDefinition('iterator_service')->getArgument(0); + $this->assertInstanceOf(TaggedIteratorArgument::class, $iteratorArgument); + $this->assertNull($iteratorArgument->getIndexAttribute()); + } } diff --git a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Http/Api/MandrillTransport.php b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Http/Api/MandrillTransport.php index bf1c154b5d..67600d42d2 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Http/Api/MandrillTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Http/Api/MandrillTransport.php @@ -84,7 +84,7 @@ class MandrillTransport extends AbstractApiTransport } $headersToBypass = ['from', 'to', 'cc', 'bcc', 'subject', 'content-type']; - foreach ($email->getHeaders()->getAll() as $name => $header) { + foreach ($email->getHeaders()->all() as $name => $header) { if (\in_array($name, $headersToBypass, true)) { continue; } diff --git a/src/Symfony/Component/Mailer/Bridge/Mailgun/Http/Api/MailgunTransport.php b/src/Symfony/Component/Mailer/Bridge/Mailgun/Http/Api/MailgunTransport.php index 56f90eb97c..74a3ab2086 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailgun/Http/Api/MailgunTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailgun/Http/Api/MailgunTransport.php @@ -45,7 +45,7 @@ class MailgunTransport extends AbstractApiTransport { $body = new FormDataPart($this->getPayload($email, $envelope)); $headers = []; - foreach ($body->getPreparedHeaders()->getAll() as $header) { + foreach ($body->getPreparedHeaders()->all() as $header) { $headers[] = $header->toString(); } @@ -98,7 +98,7 @@ class MailgunTransport extends AbstractApiTransport } $headersToBypass = ['from', 'to', 'cc', 'bcc', 'subject', 'content-type']; - foreach ($headers->getAll() as $name => $header) { + foreach ($headers->all() as $name => $header) { if (\in_array($name, $headersToBypass, true)) { continue; } diff --git a/src/Symfony/Component/Mailer/Bridge/Mailgun/Http/MailgunTransport.php b/src/Symfony/Component/Mailer/Bridge/Mailgun/Http/MailgunTransport.php index 6ddf1f3ed5..1ba6df4745 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailgun/Http/MailgunTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailgun/Http/MailgunTransport.php @@ -47,7 +47,7 @@ class MailgunTransport extends AbstractHttpTransport 'message' => new DataPart($message->toString(), 'message.mime'), ]); $headers = []; - foreach ($body->getPreparedHeaders()->getAll() as $header) { + foreach ($body->getPreparedHeaders()->all() as $header) { $headers[] = $header->toString(); } $endpoint = str_replace(['%domain%', '%region_dot%'], [urlencode($this->domain), 'us' !== ($this->region ?: 'us') ? $this->region.'.' : ''], self::ENDPOINT); diff --git a/src/Symfony/Component/Mailer/Bridge/Postmark/Http/Api/PostmarkTransport.php b/src/Symfony/Component/Mailer/Bridge/Postmark/Http/Api/PostmarkTransport.php index 8114395762..5d327182b5 100644 --- a/src/Symfony/Component/Mailer/Bridge/Postmark/Http/Api/PostmarkTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Postmark/Http/Api/PostmarkTransport.php @@ -69,7 +69,7 @@ class PostmarkTransport extends AbstractApiTransport ]; $headersToBypass = ['from', 'to', 'cc', 'bcc', 'subject', 'content-type', 'sender']; - foreach ($email->getHeaders()->getAll() as $name => $header) { + foreach ($email->getHeaders()->all() as $name => $header) { if (\in_array($name, $headersToBypass, true)) { continue; } diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Http/Api/SendgridTransport.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Http/Api/SendgridTransport.php index 3beec418da..628951aaf9 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Http/Api/SendgridTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Http/Api/SendgridTransport.php @@ -83,7 +83,7 @@ class SendgridTransport extends AbstractApiTransport // these headers can't be overwritten according to Sendgrid docs // see https://developers.pepipost.com/migration-api/new-subpage/email-send $headersToBypass = ['x-sg-id', 'x-sg-eid', 'received', 'dkim-signature', 'content-transfer-encoding', 'from', 'to', 'cc', 'bcc', 'subject', 'content-type', 'reply-to']; - foreach ($email->getHeaders()->getAll() as $name => $header) { + foreach ($email->getHeaders()->all() as $name => $header) { if (\in_array($name, $headersToBypass, true)) { continue; } diff --git a/src/Symfony/Component/Mailer/DelayedSmtpEnvelope.php b/src/Symfony/Component/Mailer/DelayedSmtpEnvelope.php index 4c5ed46cfe..f32b240476 100644 --- a/src/Symfony/Component/Mailer/DelayedSmtpEnvelope.php +++ b/src/Symfony/Component/Mailer/DelayedSmtpEnvelope.php @@ -71,7 +71,7 @@ final class DelayedSmtpEnvelope extends SmtpEnvelope { $recipients = []; foreach (['to', 'cc', 'bcc'] as $name) { - foreach ($headers->getAll($name) as $header) { + foreach ($headers->all($name) as $header) { foreach ($header->getAddresses() as $address) { $recipients[] = new Address($address->getAddress()); } diff --git a/src/Symfony/Component/Mailer/EventListener/MessageListener.php b/src/Symfony/Component/Mailer/EventListener/MessageListener.php index 6211ffb25b..f300f6370a 100644 --- a/src/Symfony/Component/Mailer/EventListener/MessageListener.php +++ b/src/Symfony/Component/Mailer/EventListener/MessageListener.php @@ -51,7 +51,7 @@ class MessageListener implements EventSubscriberInterface } $headers = $message->getHeaders(); - foreach ($this->headers->getAll() as $name => $header) { + foreach ($this->headers->all() as $name => $header) { if (!$headers->has($name)) { $headers->add($header); } else { diff --git a/src/Symfony/Component/Mime/Email.php b/src/Symfony/Component/Mime/Email.php index 557f2dbb52..9d9b48eff5 100644 --- a/src/Symfony/Component/Mime/Email.php +++ b/src/Symfony/Component/Mime/Email.php @@ -101,7 +101,7 @@ class Email extends Message } /** - * @param Address|NamedAddress|string $addresses + * @param Address|NamedAddress|string ...$addresses * * @return $this */ @@ -111,7 +111,7 @@ class Email extends Message } /** - * @param Address|NamedAddress|string $addresses + * @param Address|NamedAddress|string ...$addresses * * @return $this */ @@ -129,7 +129,7 @@ class Email extends Message } /** - * @param Address|string $addresses + * @param Address|string ...$addresses * * @return $this */ @@ -139,7 +139,7 @@ class Email extends Message } /** - * @param Address|string $addresses + * @param Address|string ...$addresses * * @return $this */ @@ -157,7 +157,7 @@ class Email extends Message } /** - * @param Address|NamedAddress|string $addresses + * @param Address|NamedAddress|string ...$addresses * * @return $this */ @@ -167,7 +167,7 @@ class Email extends Message } /** - * @param Address|NamedAddress|string $addresses + * @param Address|NamedAddress|string ...$addresses * * @return $this */ @@ -185,7 +185,7 @@ class Email extends Message } /** - * @param Address|NamedAddress|string $addresses + * @param Address|NamedAddress|string ...$addresses * * @return $this */ @@ -195,7 +195,7 @@ class Email extends Message } /** - * @param Address|string $addresses + * @param Address|string ...$addresses * * @return $this */ @@ -213,7 +213,7 @@ class Email extends Message } /** - * @param Address|NamedAddress|string $addresses + * @param Address|NamedAddress|string ...$addresses * * @return $this */ @@ -223,7 +223,7 @@ class Email extends Message } /** - * @param Address|string $addresses + * @param Address|string ...$addresses * * @return $this */ diff --git a/src/Symfony/Component/Mime/Header/Headers.php b/src/Symfony/Component/Mime/Header/Headers.php index 2797058266..dc8cb3476b 100644 --- a/src/Symfony/Component/Mime/Header/Headers.php +++ b/src/Symfony/Component/Mime/Header/Headers.php @@ -49,7 +49,7 @@ final class Headers public function setMaxLineLength(int $lineLength) { $this->lineLength = $lineLength; - foreach ($this->getAll() as $header) { + foreach ($this->all() as $header) { $header->setMaxLineLength($lineLength); } } @@ -175,7 +175,7 @@ final class Headers return array_shift($values); } - public function getAll(string $name = null): iterable + public function all(string $name = null): iterable { if (null === $name) { foreach ($this->headers as $name => $collection) { @@ -218,7 +218,7 @@ final class Headers public function toArray(): array { $arr = []; - foreach ($this->getAll() as $header) { + foreach ($this->all() as $header) { if ('' !== $header->getBodyAsString()) { $arr[] = $header->toString(); } diff --git a/src/Symfony/Component/Mime/Tests/Header/HeadersTest.php b/src/Symfony/Component/Mime/Tests/Header/HeadersTest.php index 2f4a1dd635..3568c9a6e4 100644 --- a/src/Symfony/Component/Mime/Tests/Header/HeadersTest.php +++ b/src/Symfony/Component/Mime/Tests/Header/HeadersTest.php @@ -141,7 +141,7 @@ class HeadersTest extends TestCase $this->assertNull($headers->get('Message-ID')); } - public function testGetAllReturnsAllHeadersMatchingName() + public function testAllReturnsAllHeadersMatchingName() { $header0 = new UnstructuredHeader('X-Test', 'some@id'); $header1 = new UnstructuredHeader('X-Test', 'other@id'); @@ -150,10 +150,10 @@ class HeadersTest extends TestCase $headers->addTextHeader('X-Test', 'some@id'); $headers->addTextHeader('X-Test', 'other@id'); $headers->addTextHeader('X-Test', 'more@id'); - $this->assertEquals([$header0, $header1, $header2], iterator_to_array($headers->getAll('X-Test'))); + $this->assertEquals([$header0, $header1, $header2], iterator_to_array($headers->all('X-Test'))); } - public function testGetAllReturnsAllHeadersIfNoArguments() + public function testAllReturnsAllHeadersIfNoArguments() { $header0 = new IdentificationHeader('Message-ID', 'some@id'); $header1 = new UnstructuredHeader('Subject', 'thing'); @@ -162,13 +162,13 @@ class HeadersTest extends TestCase $headers->addIdHeader('Message-ID', 'some@id'); $headers->addTextHeader('Subject', 'thing'); $headers->addMailboxListHeader('To', [new Address('person@example.org')]); - $this->assertEquals(['message-id' => $header0, 'subject' => $header1, 'to' => $header2], iterator_to_array($headers->getAll())); + $this->assertEquals(['message-id' => $header0, 'subject' => $header1, 'to' => $header2], iterator_to_array($headers->all())); } - public function testGetAllReturnsEmptyArrayIfNoneSet() + public function testAllReturnsEmptyArrayIfNoneSet() { $headers = new Headers(); - $this->assertEquals([], iterator_to_array($headers->getAll('Received'))); + $this->assertEquals([], iterator_to_array($headers->all('Received'))); } public function testRemoveRemovesAllHeadersWithName() @@ -199,12 +199,12 @@ class HeadersTest extends TestCase $this->assertEquals($header, $headers->get('message-id')); } - public function testGetAllIsNotCaseSensitive() + public function testAllIsNotCaseSensitive() { $header = new IdentificationHeader('Message-ID', 'some@id'); $headers = new Headers(); $headers->addIdHeader('Message-ID', 'some@id'); - $this->assertEquals([$header], iterator_to_array($headers->getAll('message-id'))); + $this->assertEquals([$header], iterator_to_array($headers->all('message-id'))); } public function testRemoveIsNotCaseSensitive() diff --git a/src/Symfony/Component/Mime/Tests/MessageTest.php b/src/Symfony/Component/Mime/Tests/MessageTest.php index dbeb0a5544..cc806b919e 100644 --- a/src/Symfony/Component/Mime/Tests/MessageTest.php +++ b/src/Symfony/Component/Mime/Tests/MessageTest.php @@ -68,7 +68,7 @@ class MessageTest extends TestCase $message = new Message(); $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']); $h = $message->getPreparedHeaders(); - $this->assertCount(4, iterator_to_array($h->getAll())); + $this->assertCount(4, iterator_to_array($h->all())); $this->assertEquals(new MailboxListHeader('From', [new Address('fabien@symfony.com')]), $h->get('From')); $this->assertEquals(new UnstructuredHeader('MIME-Version', '1.0'), $h->get('mime-version')); $this->assertTrue($h->has('Message-Id'));