Swift   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 12
dl 0
loc 54
rs 10
c 0
b 0
f 0
wmc 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 2
A __clone() 0 4 1
A create() 0 3 1
A send() 0 6 1
1
<?php
2
3
/**
4
 * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0
5
 * @copyright Aimeos (aimeos.org), 2014-2022
6
 * @package Base
7
 * @subpackage Mail
8
 */
9
10
11
namespace Aimeos\Base\Mail;
12
13
14
/**
15
 * SwiftMailer implementation for creating and sending e-mails.
16
 *
17
 * @package Base
18
 * @subpackage Mail
19
 */
20
class Swift implements \Aimeos\Base\Mail\Iface
21
{
22
	private $closure;
23
24
25
	/**
26
	 * Initializes the instance of the class.
27
	 *
28
	 * @param \Closure|\Swift_Mailer $object Closure or Swift_Mailer object
29
	 */
30
	public function __construct( $object )
31
	{
32
		if( $object instanceof \Closure ) {
33
			$this->closure = $object;
34
		} else {
35
			$this->closure = function() use ( $object ) { return $object; };
36
		}
37
	}
38
39
40
	/**
41
	 * Creates a new e-mail message object.
42
	 *
43
	 * @param string $charset Default charset of the message
44
	 * @return \Aimeos\Base\Mail\Message\Iface E-mail message object
45
	 */
46
	public function create( string $charset = 'UTF-8' ) : \Aimeos\Base\Mail\Message\Iface
47
	{
48
		return new \Aimeos\Base\Mail\Message\Swift( $this, new \Swift_Message(), $charset );
49
	}
50
51
52
	/**
53
	 * Sends the e-mail message to the mail server.
54
	 *
55
	 * @param \Aimeos\Base\Mail\Message\Iface $message E-mail message object
56
	 * @return \Aimeos\Base\Mail\Iface Mail instance for method chaining
57
	 */
58
	public function send( \Aimeos\Base\Mail\Message\Iface $message ) : Iface
59
	{
60
		$closure = $this->closure;
61
		$closure()->send( $message->object() );
0 ignored issues
show
Bug introduced by
The method object() does not exist on Aimeos\Base\Mail\Message\Iface. It seems like you code against a sub-type of Aimeos\Base\Mail\Message\Iface such as Aimeos\Base\Mail\Message\Swift. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

61
		$closure()->send( $message->/** @scrutinizer ignore-call */ object() );
Loading history...
62
63
		return $this;
64
	}
65
66
67
	/**
68
	 * Clones the internal objects.
69
	 */
70
	public function __clone()
71
	{
72
		$closure = $this->closure;
73
		$this->closure = function() use ( $closure ) { return clone $closure(); };
74
	}
75
}
76