IMimePartFactory::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 3
c 0
b 0
f 0
dl 0
loc 10
ccs 4
cts 4
cp 1
rs 10
cc 1
nc 1
nop 5
crap 1
1
<?php
2
/**
3
 * This file is part of the ZBateson\MailMimeParser project.
4
 *
5
 * @license http://opensource.org/licenses/bsd-license.php BSD
6
 */
7
8
namespace ZBateson\MailMimeParser\Message\Factory;
9
10
use Psr\Log\LoggerInterface;
11
use ZBateson\MailMimeParser\Message\IMimePart;
12
use ZBateson\MailMimeParser\Message\MimePart;
13
use ZBateson\MailMimeParser\Stream\StreamFactory;
14
15
/**
16
 * Responsible for creating IMimePart instances.
17
 *
18
 * @author Zaahid Bateson
19
 */
20
class IMimePartFactory extends IMessagePartFactory
21
{
22
    protected PartHeaderContainerFactory $partHeaderContainerFactory;
23
24
    protected PartChildrenContainerFactory $partChildrenContainerFactory;
25
26 3
    public function __construct(
27
        LoggerInterface $logger,
28
        StreamFactory $streamFactory,
29
        PartStreamContainerFactory $partStreamContainerFactory,
30
        PartHeaderContainerFactory $partHeaderContainerFactory,
31
        PartChildrenContainerFactory $partChildrenContainerFactory
32
    ) {
33 3
        parent::__construct($logger, $streamFactory, $partStreamContainerFactory);
34 3
        $this->partHeaderContainerFactory = $partHeaderContainerFactory;
35 3
        $this->partChildrenContainerFactory = $partChildrenContainerFactory;
36
    }
37
38
    /**
39
     * Constructs a new IMimePart object and returns it
40
     */
41 19
    public function newInstance(?IMimePart $parent = null) : IMimePart
42
    {
43 19
        $streamContainer = $this->partStreamContainerFactory->newInstance();
44 19
        $headerContainer = $this->partHeaderContainerFactory->newInstance();
45 19
        $part = new MimePart(
46 19
            $parent,
47 19
            $this->logger,
48 19
            $streamContainer,
49 19
            $headerContainer,
50 19
            $this->partChildrenContainerFactory->newInstance()
51 19
        );
52 19
        $streamContainer->setStream($this->streamFactory->newMessagePartStream($part));
53 19
        return $part;
54
    }
55
}
56