From ef7e121d4e5a29a1baa49e851916e41861edf463 Mon Sep 17 00:00:00 2001 From: pedro Date: Wed, 27 Sep 2017 11:06:34 +0200 Subject: [PATCH] Migrate to SF 3 --- .php_cs | 22 ----------- .php_cs.dist | 30 ++++++++++++++ composer.json | 29 +++++++------- phpspec.yml | 2 - .../LocalAttachmentFactorySpec.php | 5 +-- .../RemoteAttachmentFactorySpec.php | 5 +-- .../ConfigurationAwareFactorySpec.php | 11 +++--- .../Mailer/EventDispatcherMailerSpec.php | 20 +++++----- src/Knp/UniMail/AttachmentFactory.php | 13 +++---- .../ChainAttachmentFactory.php | 21 +++++----- .../LocalAttachmentFactory.php | 7 ++-- .../RemoteAttachmentFactory.php | 5 ++- src/Knp/UniMail/Cid/Collection.php | 9 +---- src/Knp/UniMail/Cid/Resolver.php | 9 ++--- src/Knp/UniMail/Cid/Resolver/LocalFile.php | 13 ++----- src/Knp/UniMail/Cid/Resolver/RemoteFile.php | 10 ++--- .../DependencyInjection/UniMailExtension.php | 6 +-- .../EventListener/AttachmentResolver.php | 11 ++++-- .../EventListener/CidAttachmentMerger.php | 5 ++- .../UniMail/EventListener/TwigRenderer.php | 5 ++- src/Knp/UniMail/Mail/AbstractMail.php | 8 ++-- src/Knp/UniMail/MailFactory.php | 8 +--- .../MailFactory/ConfigurationAwareFactory.php | 9 +---- .../UniMail/MailFactory/RegistryFactory.php | 9 ++--- .../UniMail/MailFactory/StrategyMailer.php | 11 ++---- .../StrategyMailer/SwiftMailFactory.php | 24 ++++-------- .../StrategyMailer/TwigMailFactory.php | 23 +++-------- src/Knp/UniMail/Mailer.php | 17 +------- .../UniMail/Mailer/EventDispatcherMailer.php | 21 +++------- src/Knp/UniMail/Mailer/SwiftMailer.php | 39 +++++++------------ src/Knp/UniMail/Mailer/TwigMailer.php | 35 ++++++----------- src/Knp/UniMail/Resources/config/services.yml | 35 ++++++++--------- 32 files changed, 199 insertions(+), 278 deletions(-) delete mode 100644 .php_cs create mode 100644 .php_cs.dist delete mode 100644 phpspec.yml diff --git a/.php_cs b/.php_cs deleted file mode 100644 index 8605612..0000000 --- a/.php_cs +++ /dev/null @@ -1,22 +0,0 @@ -in(__DIR__) - ->exclude('spec') - ->exclude('vendor') -; - -return Symfony\CS\Config\Config::create() - ->setUsingCache(true) - ->level(Symfony\CS\FixerInterface::SYMFONY_LEVEL) - ->fixers([ - 'align_double_arrow', - 'align_equals', - 'concat_with_spaces', - 'logical_not_operators_with_spaces', - 'newline_after_open_tag', - 'ordered_use', - 'phpdoc_order', - ]) - ->finder($finder) -; diff --git a/.php_cs.dist b/.php_cs.dist new file mode 100644 index 0000000..0dcbf4c --- /dev/null +++ b/.php_cs.dist @@ -0,0 +1,30 @@ +in(__DIR__); +$finder->exclude('vendor'); + +$config = PhpCsFixer\Config::create() + ->setRiskyAllowed(true) + ->setRules([ + '@Symfony' => true, + '@Symfony:risky' => true, + 'PedroTroller/line_break_between_statements' => true, + 'PedroTroller/phpspec' => true, + 'PedroTroller/single_line_comment' => ['action' => 'expanded'], + 'array_syntax' => [ 'syntax' => 'short', ], + 'binary_operator_spaces' => [ 'align_double_arrow' => true, 'align_equals' => true, ], + 'blank_line_before_statement' => true, + 'ordered_class_elements' => true, + 'ordered_imports' => true, + 'phpdoc_types_order' => true, + 'semicolon_after_instruction' => true, + 'single_line_comment_style' => true, + ]) + ->setUsingCache(false) + ->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers()) + ->setFinder($finder) +; + +return $config; diff --git a/composer.json b/composer.json index 67533fc..708a403 100644 --- a/composer.json +++ b/composer.json @@ -8,30 +8,33 @@ } ], "require": { + "php": ">=7.1", "doctrine/collections": "~1.0", - "swiftmailer/swiftmailer": "~5.0", - "symfony/config": "~2.4", - "symfony/dependency-injection": "~2.4", - "symfony/framework-bundle": "~2.4", - "symfony/http-kernel": "~2.4", - "symfony/security-bundle": "~2.0", - "symfony/twig-bundle": "~2.4" + "swiftmailer/swiftmailer": "~6.0", + "symfony/config": "~3.0", + "symfony/dependency-injection": "~3.0", + "symfony/expression-language": "~3.0", + "symfony/framework-bundle": "~3.0", + "symfony/http-kernel": "~3.0", + "symfony/property-access": "~3.0", + "symfony/twig-bundle": "~3.0" }, "require-dev": { - "knplabs/phpspec-welldone-extension": "~1.0", - "phpspec/phpspec": "^2.3" + "pedrotroller/php-cs-custom-fixer": "~2.0@dev", + "phpspec/phpspec": "^4.0", + "phpstan/phpstan": "^0.8.5" }, "autoload": { - "psr-0": { - "Knp\\UniMail": "src/" + "psr-4": { + "Knp\\UniMail\\": "src/Knp/UniMail" } }, "config": { - "bin-dir": "bin" + "sort-packages": true }, "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } } } diff --git a/phpspec.yml b/phpspec.yml deleted file mode 100644 index 9e2e3ab..0000000 --- a/phpspec.yml +++ /dev/null @@ -1,2 +0,0 @@ -extensions: - - Knp\PhpSpec\WellDone\Extension diff --git a/spec/Knp/UniMail/AttachmentFactory/LocalAttachmentFactorySpec.php b/spec/Knp/UniMail/AttachmentFactory/LocalAttachmentFactorySpec.php index a2f79bc..8de53e9 100644 --- a/spec/Knp/UniMail/AttachmentFactory/LocalAttachmentFactorySpec.php +++ b/spec/Knp/UniMail/AttachmentFactory/LocalAttachmentFactorySpec.php @@ -1,15 +1,14 @@ shouldHaveType('Knp\Rad\Mailer\AttachmentFactory\LocalAttachmentFactory'); + $this->shouldHaveType('Knp\UniMail\AttachmentFactory\LocalAttachmentFactory'); } function it_supports_existing_files() diff --git a/spec/Knp/UniMail/AttachmentFactory/RemoteAttachmentFactorySpec.php b/spec/Knp/UniMail/AttachmentFactory/RemoteAttachmentFactorySpec.php index 8981497..902fd78 100644 --- a/spec/Knp/UniMail/AttachmentFactory/RemoteAttachmentFactorySpec.php +++ b/spec/Knp/UniMail/AttachmentFactory/RemoteAttachmentFactorySpec.php @@ -1,15 +1,14 @@ shouldHaveType('Knp\Rad\Mailer\AttachmentFactory\RemoteAttachmentFactory'); + $this->shouldHaveType('Knp\UniMail\AttachmentFactory\RemoteAttachmentFactory'); } function it_supports_existing_urls() diff --git a/spec/Knp/UniMail/MailFactory/ConfigurationAwareFactorySpec.php b/spec/Knp/UniMail/MailFactory/ConfigurationAwareFactorySpec.php index f4a1798..87e74b2 100644 --- a/spec/Knp/UniMail/MailFactory/ConfigurationAwareFactorySpec.php +++ b/spec/Knp/UniMail/MailFactory/ConfigurationAwareFactorySpec.php @@ -1,11 +1,10 @@ [ 'from' => 'mail@mail.com', 'to' => 'to@mail.com', - ] + ], ]; $this->beConstructedWith($configuration, $factory); @@ -23,7 +22,7 @@ function let(MailFactory $factory) function it_is_initializable() { - $this->shouldHaveType('Knp\Rad\Mailer\MailFactory\ConfigurationAwareFactory'); + $this->shouldHaveType('Knp\UniMail\MailFactory\ConfigurationAwareFactory'); } function it_instantiate_a_new_mail_with_configuration($factory, Mail $mail) diff --git a/spec/Knp/UniMail/Mailer/EventDispatcherMailerSpec.php b/spec/Knp/UniMail/Mailer/EventDispatcherMailerSpec.php index 70ac418..3412088 100644 --- a/spec/Knp/UniMail/Mailer/EventDispatcherMailerSpec.php +++ b/spec/Knp/UniMail/Mailer/EventDispatcherMailerSpec.php @@ -1,11 +1,11 @@ shouldHaveType('Knp\Rad\Mailer\Mailer\EventDispatcherMailer'); + $this->shouldHaveType('Knp\UniMail\Mailer\EventDispatcherMailer'); } function it_ask_to_wrapped_mailer_to_create_a_mail($wrapped, Mail $mail) @@ -43,7 +43,7 @@ function it_dispatchs_events_when_a_mail_is_sent($wrapped, $dispatcher) $dispatcher ->dispatch( MailerEvents::PRE_SEND, - Argument::that(function($e) use ($mail) { + Argument::that(function ($e) use ($mail) { return $mail === $e->getMail(); }) ) @@ -53,7 +53,7 @@ function it_dispatchs_events_when_a_mail_is_sent($wrapped, $dispatcher) $dispatcher ->dispatch( MailerEvents::preSend($mail), - Argument::that(function($e) use ($mail) { + Argument::that(function ($e) use ($mail) { return $mail === $e->getMail(); }) ) @@ -63,7 +63,7 @@ function it_dispatchs_events_when_a_mail_is_sent($wrapped, $dispatcher) $dispatcher ->dispatch( MailerEvents::POST_SEND, - Argument::that(function($e) use ($mail) { + Argument::that(function ($e) use ($mail) { return $mail === $e->getMail(); }) ) @@ -73,7 +73,7 @@ function it_dispatchs_events_when_a_mail_is_sent($wrapped, $dispatcher) $dispatcher ->dispatch( MailerEvents::postSend($mail), - Argument::that(function($e) use ($mail) { + Argument::that(function ($e) use ($mail) { return $mail === $e->getMail(); }) ) diff --git a/src/Knp/UniMail/AttachmentFactory.php b/src/Knp/UniMail/AttachmentFactory.php index 07b5aff..2540db1 100644 --- a/src/Knp/UniMail/AttachmentFactory.php +++ b/src/Knp/UniMail/AttachmentFactory.php @@ -2,20 +2,17 @@ namespace Knp\UniMail; +use Swift_Mime_Attachment; + interface AttachmentFactory { /** * @param mixed $content - * - * @return bool */ - public function supports($content); + public function supports($content): bool; /** - * @param string $name - * @param mixed $content - * - * @return Swift_Attachment + * @param mixed $content */ - public function createAttachment($name, $content); + public function createAttachment(string $name, $content): Swift_Mime_Attachment; } diff --git a/src/Knp/UniMail/AttachmentFactory/ChainAttachmentFactory.php b/src/Knp/UniMail/AttachmentFactory/ChainAttachmentFactory.php index f0c0e6d..2fee509 100644 --- a/src/Knp/UniMail/AttachmentFactory/ChainAttachmentFactory.php +++ b/src/Knp/UniMail/AttachmentFactory/ChainAttachmentFactory.php @@ -2,26 +2,26 @@ namespace Knp\UniMail\AttachmentFactory; +use Exception; use Knp\UniMail\AttachmentFactory; +use Swift_Mime_Attachment; class ChainAttachmentFactory implements AttachmentFactory { /** * @var AttachmentFactory[] */ - private $factories; + private $factories = []; - /** - * @param AttachmentFactory[] $factories - */ - public function __construct(array $factories) + public function addFactory(AttachmentFactory $factory) { - $this->factories = $factories; + $this->factories[] = $factory; } + /** * {@inheritdoc} */ - public function supports($content) + public function supports($content): bool { foreach ($this->factories as $factory) { if (true === $factory->supports($content)) { @@ -35,7 +35,7 @@ public function supports($content) /** * {@inheritdoc} */ - public function createAttachment($name, $content) + public function createAttachment(string $name, $content): Swift_Mime_Attachment { foreach ($this->factories as $factory) { if (true === $factory->supports($content)) { @@ -48,15 +48,18 @@ public function createAttachment($name, $content) switch (true) { case is_array($content): $message = sprintf($message, 'an', 'array'); + break; case is_object($content): $message = sprintf($message, 'object', get_class($content)); + break; default: $message = sprintf($message, gettype($content), $content); + break; } - throw new \Exception($message); + throw new Exception($message); } } diff --git a/src/Knp/UniMail/AttachmentFactory/LocalAttachmentFactory.php b/src/Knp/UniMail/AttachmentFactory/LocalAttachmentFactory.php index 998e531..baf4d81 100644 --- a/src/Knp/UniMail/AttachmentFactory/LocalAttachmentFactory.php +++ b/src/Knp/UniMail/AttachmentFactory/LocalAttachmentFactory.php @@ -4,13 +4,14 @@ use Knp\UniMail\AttachmentFactory; use Swift_Attachment; +use Swift_Mime_Attachment; class LocalAttachmentFactory implements AttachmentFactory { /** * {@inheritdoc} */ - public function supports($content) + public function supports($content): bool { if (false === is_string($content)) { return false; @@ -22,11 +23,11 @@ public function supports($content) /** * {@inheritdoc} */ - public function createAttachment($name, $content) + public function createAttachment(string $name, $content): Swift_Mime_Attachment { $attachment = Swift_Attachment::fromPath($content); - if (true === is_string($name)) { + if (is_string($name)) { $attachment->setFilename($name); } diff --git a/src/Knp/UniMail/AttachmentFactory/RemoteAttachmentFactory.php b/src/Knp/UniMail/AttachmentFactory/RemoteAttachmentFactory.php index f9b95c1..218d749 100644 --- a/src/Knp/UniMail/AttachmentFactory/RemoteAttachmentFactory.php +++ b/src/Knp/UniMail/AttachmentFactory/RemoteAttachmentFactory.php @@ -4,13 +4,14 @@ use Knp\UniMail\AttachmentFactory; use Swift_Attachment; +use Swift_Mime_Attachment; class RemoteAttachmentFactory implements AttachmentFactory { /** * {@inheritdoc} */ - public function supports($content) + public function supports($content): bool { if (false === is_string($content)) { return false; @@ -28,7 +29,7 @@ public function supports($content) /** * {@inheritdoc} */ - public function createAttachment($name, $content) + public function createAttachment(string $name, $content): Swift_Mime_Attachment { $attachment = Swift_Attachment::fromPath($content); diff --git a/src/Knp/UniMail/Cid/Collection.php b/src/Knp/UniMail/Cid/Collection.php index ba7f013..e371d87 100644 --- a/src/Knp/UniMail/Cid/Collection.php +++ b/src/Knp/UniMail/Cid/Collection.php @@ -37,20 +37,15 @@ public function all() /** * @param Swift_Mime_Attachment $cid - * - * @return Collection */ - public function add(Swift_Mime_Attachment $cid) + public function add(Swift_Mime_Attachment $cid): Collection { $this->cids[$cid->getId()] = $cid; return $this; } - /** - * @return Collection - */ - public function clear() + public function clear(): Collection { $this->cids = []; diff --git a/src/Knp/UniMail/Cid/Resolver.php b/src/Knp/UniMail/Cid/Resolver.php index ce3a604..822623a 100644 --- a/src/Knp/UniMail/Cid/Resolver.php +++ b/src/Knp/UniMail/Cid/Resolver.php @@ -2,12 +2,9 @@ namespace Knp\UniMail\Cid; +use Swift_Mime_EmbeddedFile; + interface Resolver { - /** - * @param string $string - * - * @return Swift_EmbeddedFile|null - */ - public function createFromString($string); + public function createFromString(string $string): ? Swift_Mime_EmbeddedFile; } diff --git a/src/Knp/UniMail/Cid/Resolver/LocalFile.php b/src/Knp/UniMail/Cid/Resolver/LocalFile.php index 46b5fb5..077e430 100644 --- a/src/Knp/UniMail/Cid/Resolver/LocalFile.php +++ b/src/Knp/UniMail/Cid/Resolver/LocalFile.php @@ -4,6 +4,7 @@ use Knp\UniMail\Cid\Resolver; use Swift_EmbeddedFile; +use Swift_Mime_EmbeddedFile; class LocalFile implements Resolver { @@ -12,24 +13,18 @@ class LocalFile implements Resolver */ private $directory; - /** - * @param string $directory - */ - public function __construct($directory) + public function __construct(string $directory) { $this->directory = $directory; } - /** - * {@inheritdoc} - */ - public function createFromString($string) + public function createFromString(string $string): ? Swift_Mime_EmbeddedFile { $string = str_replace('/', DIRECTORY_SEPARATOR, $string); $string = sprintf('%s%s%s', $this->directory, DIRECTORY_SEPARATOR, $string); if (false === file_exists($string)) { - return; + return null; } return Swift_EmbeddedFile::fromPath($string); diff --git a/src/Knp/UniMail/Cid/Resolver/RemoteFile.php b/src/Knp/UniMail/Cid/Resolver/RemoteFile.php index d1325d3..f9ecd98 100644 --- a/src/Knp/UniMail/Cid/Resolver/RemoteFile.php +++ b/src/Knp/UniMail/Cid/Resolver/RemoteFile.php @@ -4,22 +4,20 @@ use Knp\UniMail\Cid\Resolver; use Swift_EmbeddedFile; +use Swift_Mime_EmbeddedFile; class RemoteFile implements Resolver { - /** - * {@inheritdoc} - */ - public function createFromString($string) + public function createFromString(string $string): ? Swift_Mime_EmbeddedFile { $headers = @get_headers($string); if (false === $headers) { - return; + return null; } if (false !== strpos($headers[0], '404')) { - return; + return null; } return Swift_EmbeddedFile::fromPath($string); diff --git a/src/Knp/UniMail/DependencyInjection/UniMailExtension.php b/src/Knp/UniMail/DependencyInjection/UniMailExtension.php index 5eddaa0..40869a6 100644 --- a/src/Knp/UniMail/DependencyInjection/UniMailExtension.php +++ b/src/Knp/UniMail/DependencyInjection/UniMailExtension.php @@ -14,7 +14,7 @@ class UniMailExtension extends Extension */ public function load(array $config, ContainerBuilder $container) { - $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); $loader->load('services.yml'); $configuration = $this->getConfiguration($config, $container); @@ -26,7 +26,7 @@ public function load(array $config, ContainerBuilder $container) } /** - * {@inheritdoc} + * @return Configuration */ public function getConfiguration(array $config, ContainerBuilder $container) { @@ -34,7 +34,7 @@ public function getConfiguration(array $config, ContainerBuilder $container) 'attachments_directory' => $container->getParameter('knp_unimail.attachments_directory'), ]; - return new Configuration($defaults); + return new Configuration($defaults); } /** diff --git a/src/Knp/UniMail/EventListener/AttachmentResolver.php b/src/Knp/UniMail/EventListener/AttachmentResolver.php index d47b5fb..e4aa2b8 100644 --- a/src/Knp/UniMail/EventListener/AttachmentResolver.php +++ b/src/Knp/UniMail/EventListener/AttachmentResolver.php @@ -5,11 +5,16 @@ use Knp\UniMail\AttachmentFactory; use Knp\UniMail\MailerEvent; use Knp\UniMail\MailerEvents; -use Swift_Mime_MimeEntity; +use Swift_Mime_SimpleMimeEntity; use Symfony\Component\EventDispatcher\EventSubscriberInterface; class AttachmentResolver implements EventSubscriberInterface { + /** + * @var AttachmentFactory + */ + private $factory; + public function __construct(AttachmentFactory $factory) { $this->factory = $factory; @@ -18,7 +23,7 @@ public function __construct(AttachmentFactory $factory) public static function getSubscribedEvents() { return [ - MailerEvents::PRE_SEND => array('beforeSend', -2), + MailerEvents::PRE_SEND => ['beforeSend', -2], ]; } @@ -28,7 +33,7 @@ public function beforeSend(MailerEvent $event) $attachments = $mail->getAttachments(); foreach ($attachments as $index => $attachment) { - if ($attachment instanceof Swift_Mime_MimeEntity) { + if ($attachment instanceof Swift_Mime_SimpleMimeEntity) { continue; } diff --git a/src/Knp/UniMail/EventListener/CidAttachmentMerger.php b/src/Knp/UniMail/EventListener/CidAttachmentMerger.php index 2c0af1a..86f41b7 100644 --- a/src/Knp/UniMail/EventListener/CidAttachmentMerger.php +++ b/src/Knp/UniMail/EventListener/CidAttachmentMerger.php @@ -9,6 +9,9 @@ class CidAttachmentMerger implements EventSubscriberInterface { + /** + * @var Collection + */ private $cids; public function __construct(Collection $cids) @@ -19,7 +22,7 @@ public function __construct(Collection $cids) public static function getSubscribedEvents() { return [ - MailerEvents::PRE_SEND => array('beforeSend', -3), + MailerEvents::PRE_SEND => ['beforeSend', -3], ]; } diff --git a/src/Knp/UniMail/EventListener/TwigRenderer.php b/src/Knp/UniMail/EventListener/TwigRenderer.php index a2ed790..5466c13 100644 --- a/src/Knp/UniMail/EventListener/TwigRenderer.php +++ b/src/Knp/UniMail/EventListener/TwigRenderer.php @@ -11,6 +11,9 @@ class TwigRenderer implements EventSubscriberInterface { + /** + * @var Twig_Environment + */ private $twig; public function __construct(Twig_Environment $twig) @@ -21,7 +24,7 @@ public function __construct(Twig_Environment $twig) public static function getSubscribedEvents() { return [ - MailerEvents::PRE_SEND => array('beforeSend', -2), + MailerEvents::PRE_SEND => ['beforeSend', -2], ]; } diff --git a/src/Knp/UniMail/Mail/AbstractMail.php b/src/Knp/UniMail/Mail/AbstractMail.php index edd69cd..7667efb 100644 --- a/src/Knp/UniMail/Mail/AbstractMail.php +++ b/src/Knp/UniMail/Mail/AbstractMail.php @@ -17,22 +17,22 @@ abstract class AbstractMail implements Mail private $from; /** - * @var string|array + * @var array|string */ private $to; /** - * @var string|array + * @var array|string */ private $cc; /** - * @var string|array + * @var array|string */ private $bcc; /** - * @var string|array + * @var array|string */ private $replyTo; diff --git a/src/Knp/UniMail/MailFactory.php b/src/Knp/UniMail/MailFactory.php index dc9a2f0..63742ab 100644 --- a/src/Knp/UniMail/MailFactory.php +++ b/src/Knp/UniMail/MailFactory.php @@ -4,11 +4,5 @@ interface MailFactory { - /** - * @param string $name - * @param array|null $options - * - * @return Mail - */ - public function createMail($name, array $options = []); + public function createMail(string $name, array $options = []): Mail; } diff --git a/src/Knp/UniMail/MailFactory/ConfigurationAwareFactory.php b/src/Knp/UniMail/MailFactory/ConfigurationAwareFactory.php index 2c0557f..d04ab1f 100644 --- a/src/Knp/UniMail/MailFactory/ConfigurationAwareFactory.php +++ b/src/Knp/UniMail/MailFactory/ConfigurationAwareFactory.php @@ -2,6 +2,7 @@ namespace Knp\UniMail\MailFactory; +use Knp\UniMail\Mail; use Knp\UniMail\MailFactory; class ConfigurationAwareFactory implements MailFactory @@ -16,19 +17,13 @@ class ConfigurationAwareFactory implements MailFactory */ private $wrapped; - /** - * @param array $configuration - */ public function __construct(array $configuration, MailFactory $wrapped) { $this->configuration = $configuration; $this->wrapped = $wrapped; } - /** - * {@inheritdoc} - */ - public function createMail($name, array $options = []) + public function createMail(string $name, array $options = []): Mail { if (true === array_key_exists($name, $this->configuration)) { $options = array_replace( diff --git a/src/Knp/UniMail/MailFactory/RegistryFactory.php b/src/Knp/UniMail/MailFactory/RegistryFactory.php index 0736209..dafd004 100644 --- a/src/Knp/UniMail/MailFactory/RegistryFactory.php +++ b/src/Knp/UniMail/MailFactory/RegistryFactory.php @@ -2,7 +2,9 @@ namespace Knp\UniMail\MailFactory; +use Knp\UniMail\Mail; use Knp\UniMail\MailFactory; +use RuntimeException; class RegistryFactory implements MailFactory { @@ -19,10 +21,7 @@ public function __construct(array $strategies) $this->strategies = $strategies; } - /** - * {@inheritdoc} - */ - public function createMail($name, array $options = []) + public function createMail(string $name, array $options = []): Mail { foreach ($this->strategies as $strategy) { if (true === $strategy->supports($options)) { @@ -30,7 +29,7 @@ public function createMail($name, array $options = []) } } - throw new \RuntimeException(sprintf( + throw new RuntimeException(sprintf( 'Impossible to create a mail from the given parameters : "%s"', implode('", "', array_keys($options)) )); diff --git a/src/Knp/UniMail/MailFactory/StrategyMailer.php b/src/Knp/UniMail/MailFactory/StrategyMailer.php index 2bd6574..d58b71a 100644 --- a/src/Knp/UniMail/MailFactory/StrategyMailer.php +++ b/src/Knp/UniMail/MailFactory/StrategyMailer.php @@ -2,12 +2,9 @@ namespace Knp\UniMail\MailFactory; -interface StrategyMailer +use Knp\UniMail\MailFactory; + +interface StrategyMailer extends MailFactory { - /** - * @param array $config - * - * @return bool - */ - public function supports(array $config); + public function supports(array $config): bool; } diff --git a/src/Knp/UniMail/MailFactory/StrategyMailer/SwiftMailFactory.php b/src/Knp/UniMail/MailFactory/StrategyMailer/SwiftMailFactory.php index 5198142..56c6564 100644 --- a/src/Knp/UniMail/MailFactory/StrategyMailer/SwiftMailFactory.php +++ b/src/Knp/UniMail/MailFactory/StrategyMailer/SwiftMailFactory.php @@ -2,14 +2,15 @@ namespace Knp\UniMail\MailFactory\StrategyMailer; -use Knp\UniMail\MailFactory; +use Knp\UniMail\Mail; +use Knp\UniMail\Mail\SwiftMail; use Knp\UniMail\MailFactory\StrategyMailer; use Symfony\Component\PropertyAccess\PropertyAccess; -class SwiftMailFactory implements StrategyMailer, MailFactory +class SwiftMailFactory implements StrategyMailer { /** - * @var PropertyAccessor + * @var \Symfony\Component\PropertyAccess\PropertyAccessor */ private $accessor; @@ -18,10 +19,7 @@ public function __construct() $this->accessor = PropertyAccess::createPropertyAccessor(); } - /** - * {@inheritdoc} - */ - public function supports(array $options) + public function supports(array $options): bool { $options = $this->computeOptions($options); @@ -38,10 +36,7 @@ public function supports(array $options) return false; } - /** - * {@inheritdoc} - */ - public function createMail($name, array $options = []) + public function createMail(string $name, array $options = []): Mail { $options = $this->computeOptions($options); @@ -54,12 +49,7 @@ public function createMail($name, array $options = []) return $mail; } - /** - * @param array $options - * - * @return array - */ - private function computeOptions(array $options = []) + private function computeOptions(array $options = []): array { if (true === array_key_exists('body', $options)) { $options['html_body'] = $options['body']; diff --git a/src/Knp/UniMail/MailFactory/StrategyMailer/TwigMailFactory.php b/src/Knp/UniMail/MailFactory/StrategyMailer/TwigMailFactory.php index daaa6c6..fa3b5be 100644 --- a/src/Knp/UniMail/MailFactory/StrategyMailer/TwigMailFactory.php +++ b/src/Knp/UniMail/MailFactory/StrategyMailer/TwigMailFactory.php @@ -2,15 +2,15 @@ namespace Knp\UniMail\MailFactory\StrategyMailer; +use Knp\UniMail\Mail; use Knp\UniMail\Mail\TwigMail; -use Knp\UniMail\MailFactory; use Knp\UniMail\MailFactory\StrategyMailer; use Symfony\Component\PropertyAccess\PropertyAccess; -class TwigMailFactory implements StrategyMailer, MailFactory +class TwigMailFactory implements StrategyMailer { /** - * @var PropertyAccessor + * @var \Symfony\Component\PropertyAccess\PropertyAccessor */ private $accessor; @@ -19,10 +19,7 @@ public function __construct() $this->accessor = PropertyAccess::createPropertyAccessor(); } - /** - * {@inheritdoc} - */ - public function supports(array $options) + public function supports(array $options): bool { if (false === array_key_exists('template', $options)) { return false; @@ -31,10 +28,7 @@ public function supports(array $options) return true; } - /** - * {@inheritdoc} - */ - public function createMail($name, array $options = []) + public function createMail(string $name, array $options = []): Mail { $options = $this->computeOptions($options); @@ -47,12 +41,7 @@ public function createMail($name, array $options = []) return $mail; } - /** - * @param array $options - * - * @return array - */ - private function computeOptions(array $options = []) + private function computeOptions(array $options = []): array { if (false === array_key_exists('parameters', $options)) { $options['parameters'] = []; diff --git a/src/Knp/UniMail/Mailer.php b/src/Knp/UniMail/Mailer.php index 640a9bc..668bea7 100644 --- a/src/Knp/UniMail/Mailer.php +++ b/src/Knp/UniMail/Mailer.php @@ -4,22 +4,9 @@ interface Mailer { - /** - * @param string $name - * @param array|null $options - * - * @return Mail|null - */ - public function createMail($name, array $options = []); + public function createMail(string $name, array $options = []): ? Mail; - /** - * @param Mail $mail - */ public function sendMail(Mail $mail); - /** - * @param string $name - * @param array $options - */ - public function send($name, array $options = []); + public function send(string $name, array $options = []); } diff --git a/src/Knp/UniMail/Mailer/EventDispatcherMailer.php b/src/Knp/UniMail/Mailer/EventDispatcherMailer.php index 47eb5f9..3a13e16 100644 --- a/src/Knp/UniMail/Mailer/EventDispatcherMailer.php +++ b/src/Knp/UniMail/Mailer/EventDispatcherMailer.php @@ -20,20 +20,13 @@ class EventDispatcherMailer implements Mailer */ private $dispatcher; - /** - * @param Mailer $wrapped - * @param EventDispatcherInterface $dispatcher - */ public function __construct(Mailer $wrapped, EventDispatcherInterface $dispatcher) { $this->wrapped = $wrapped; $this->dispatcher = $dispatcher; } - /** - * {@inheritdoc} - */ - public function createMail($name, array $options = []) + public function createMail(string $name, array $options = []): ? Mail { return $this ->wrapped @@ -41,9 +34,6 @@ public function createMail($name, array $options = []) ; } - /** - * {@inheritdoc} - */ public function sendMail(Mail $mail) { $event = new MailerEvent($mail); @@ -74,13 +64,12 @@ public function sendMail(Mail $mail) ; } - /** - * {@inheritdoc} - */ - public function send($name, array $options = []) + public function send(string $name, array $options = []) { $mail = $this->createMail($name, $options); - $this->sendMail($mail); + if (null !== $mail) { + $this->sendMail($mail); + } } } diff --git a/src/Knp/UniMail/Mailer/SwiftMailer.php b/src/Knp/UniMail/Mailer/SwiftMailer.php index 9132958..3c2a357 100644 --- a/src/Knp/UniMail/Mailer/SwiftMailer.php +++ b/src/Knp/UniMail/Mailer/SwiftMailer.php @@ -21,19 +21,13 @@ class SwiftMailer implements Mailer */ private $factory; - /** - * @param MailFactory $factory - */ public function __construct(Swift_Mailer $mailer, MailFactory $factory) { $this->mailer = $mailer; $this->factory = $factory; } - /** - * {@inheritdoc} - */ - public function createMail($name, array $options = []) + public function createMail(string $name, array $options = []): ? Mail { return $this ->factory @@ -41,9 +35,6 @@ public function createMail($name, array $options = []) ; } - /** - * {@inheritdoc} - */ public function sendMail(Mail $mail) { if (false === $mail instanceof SwiftMail) { @@ -53,16 +44,15 @@ public function sendMail(Mail $mail) )); } - $message = Swift_Message::newInstance() - ->setSubject($mail->getSubject()) - ->setFrom($mail->getFrom()) - ->setTo($mail->getTo()) - ->setBcc($mail->getBcc()) - ->setCc($mail->getCc()) - ->setReplyTo($mail->getReplyTo()) - ->setBody($mail->getHtmlBody(), 'text/html') - ->addPart($mail->getTextBody()) - ; + $message = new Swift_Message(); + $message->setSubject($mail->getSubject()); + $message->setFrom($mail->getFrom()); + $message->setTo($mail->getTo()); + $message->setBcc($mail->getBcc()); + $message->setCc($mail->getCc()); + $message->setReplyTo($mail->getReplyTo()); + $message->setBody($mail->getHtmlBody(), 'text/html'); + $message->addPart($mail->getTextBody()); foreach ($mail->getAttachments() as $attachment) { $message->attach($attachment); @@ -71,13 +61,12 @@ public function sendMail(Mail $mail) $this->mailer->send($message); } - /** - * {@inheritdoc} - */ - public function send($name, array $options = []) + public function send(string $name, array $options = []) { $mail = $this->createMail($name, $options); - $this->sendMail($mail); + if (null !== $mail) { + $this->sendMail($mail); + } } } diff --git a/src/Knp/UniMail/Mailer/TwigMailer.php b/src/Knp/UniMail/Mailer/TwigMailer.php index 1e5f0a6..1dc5b79 100644 --- a/src/Knp/UniMail/Mailer/TwigMailer.php +++ b/src/Knp/UniMail/Mailer/TwigMailer.php @@ -4,13 +4,13 @@ use Doctrine\Common\Collections\ArrayCollection; use Knp\UniMail\Mail; -use Knp\UniMail\Mailer as MailerInterface; +use Knp\UniMail\Mailer; use Knp\UniMail\MailFactory; use Swift_Mailer; use Swift_Message; use Twig_Environment; -class TwigMailer implements MailerInterface +class TwigMailer implements Mailer { /** * @var Twig_Environment @@ -32,10 +32,7 @@ class TwigMailer implements MailerInterface */ private $cids; - /** - * @param MailFactory $factory - */ - public function __construct(Twig_Environment $twig, Swift_Mailer $mailer, MailFactory $factory, ArrayCollection $cids) + public function __construct(Twig_Environment $twig, Swift_Mailer $mailer, MailFactory $factory, ArrayCollection $cids) { $this->twig = $twig; $this->mailer = $mailer; @@ -46,7 +43,7 @@ public function __construct(Twig_Environment $twig, Swift_Mailer $mailer, MailFa /** * {@inheritdoc} */ - public function createMail($name, array $options = []) + public function createMail(string $name, array $options = []): ? Mail { return $this ->factory @@ -54,24 +51,19 @@ public function createMail($name, array $options = []) ; } - /** - * {@inheritdoc} - */ public function sendMail(Mail $mail) { - $message = Swift_Message::newInstance(); + $message = new Swift_Message(); $template = $this->twig->loadTemplate($mail->getTemplate()); - $subject = $template->renderBlock('subject', $mail->getParameters()); + $subject = $template->renderBlock('subject', $mail->getParameters()); $html = $template->renderBlock('html_body', $mail->getParameters()); $text = $template->renderBlock('text_body', $mail->getParameters()); - $message - ->setSubject($subject) - ->setFrom($mail->getFrom()) - ->setTo($mail->getTo()) - ->setBody($html, 'text/html') - ->addPart($text) - ; + $message->setSubject($subject); + $message->setFrom($mail->getFrom()); + $message->setTo($mail->getTo()); + $message->setBody($html, 'text/html'); + $message->addPart($text); foreach ($this->cids as $name => $attachment) { $message->attach($attachment); @@ -86,10 +78,7 @@ public function sendMail(Mail $mail) $this->mailer->send($message); } - /** - * {@inheritdoc} - */ - public function send($name, array $options = []) + public function send(string $name, array $options = []) { $mail = $this->createMail($name, $options); diff --git a/src/Knp/UniMail/Resources/config/services.yml b/src/Knp/UniMail/Resources/config/services.yml index 5e4e872..9d0c5cc 100644 --- a/src/Knp/UniMail/Resources/config/services.yml +++ b/src/Knp/UniMail/Resources/config/services.yml @@ -5,9 +5,8 @@ services: knp_unimail.attachment_factory.chain_attachment_factory: class: Knp\UniMail\AttachmentFactory\ChainAttachmentFactory arguments: - factories: - - @knp_unimail.attachment_factory.local_attachment_factory - - @knp_unimail.attachment_factory.remote_attachment_factory + - ['addFactory', ['@knp_unimail.attachment_factory.local_attachment_factory']] + - ['addFactory', ['@knp_unimail.attachment_factory.remote_attachment_factory']] knp_unimail.attachment_factory.local_attachment_factory: class: Knp\UniMail\AttachmentFactory\LocalAttachmentFactory @@ -24,21 +23,21 @@ services: knp_unimail.event_listener.attachment_resolver: class: Knp\UniMail\EventListener\AttachmentResolver arguments: - - @knp_unimail.attachment_factory + - '@knp_unimail.attachment_factory' tags: - { name: kernel.event_subscriber } knp_unimail.event_listener.cid_attachment_merger: class: Knp\UniMail\EventListener\CidAttachmentMerger arguments: - - @knp_unimail.cid.collection + - '@knp_unimail.cid.collection' tags: - { name: kernel.event_subscriber } knp_unimail.event_listener.twig_renderer: class: Knp\UniMail\EventListener\TwigRenderer arguments: - - @twig + - '@twig' tags: - { name: kernel.event_subscriber } @@ -46,15 +45,15 @@ services: class: Knp\UniMail\MailFactory\ConfigurationAwareFactory public: false arguments: - - %knp_unimail.mails% - - @knp_unimail.mail_factory.registry_factory + - '%knp_unimail.mails%' + - '@knp_unimail.mail_factory.registry_factory' knp_unimail.mail_factory.registry_factory: class: Knp\UniMail\MailFactory\RegistryFactory arguments: strategies: - - @knp_unimail.mail_factory.strategy_factory.swift_mail_factory - - @knp_unimail.mail_factory.strategy_factory.twig_mail_factory + - '@knp_unimail.mail_factory.strategy_factory.swift_mail_factory' + - '@knp_unimail.mail_factory.strategy_factory.twig_mail_factory' knp_unimail.mail_factory.strategy_factory.swift_mail_factory: class: Knp\UniMail\MailFactory\StrategyMailer\SwiftMailFactory @@ -68,14 +67,14 @@ services: knp_unimail.mailer.event_dispatcher_mailer: class: Knp\UniMail\Mailer\EventDispatcherMailer arguments: - - @knp_unimail.mailer.swift_mailer - - @event_dispatcher + - '@knp_unimail.mailer.swift_mailer' + - '@event_dispatcher' knp_unimail.mailer.swift_mailer: class: Knp\UniMail\Mailer\SwiftMailer arguments: - - @mailer - - @knp_unimail.mail_factory + - '@mailer' + - '@knp_unimail.mail_factory' knp_unimail.mailer: alias: knp_unimail.mailer.event_dispatcher_mailer @@ -83,17 +82,17 @@ services: knp_unimail.twig.cid_extension: class: Knp\UniMail\Twig\CidExtension arguments: - - @knp_unimail.cid.collection - - [@knp_unimail.cid.resolver.local_file, @knp_unimail.cid.resolver.remove_file] + - '@knp_unimail.cid.collection' + - ['@knp_unimail.cid.resolver.local_file', '@knp_unimail.cid.resolver.remove_file'] tags: - { name: twig.extension } knp_unimail.cid.resolver.local_file: class: Knp\UniMail\Cid\Resolver\LocalFile arguments: - - %knp_unimail.attachments_directory% + - '%knp_unimail.attachments_directory%' knp_unimail.cid.resolver.remove_file: class: Knp\UniMail\Cid\Resolver\RemoteFile arguments: - - %knp_unimail.attachments_directory% + - '%knp_unimail.attachments_directory%'