<?php
namespace ZBateson\MailMimeParser\Message\Factory;
use Psr\Log\LoggerInterface;
use ZBateson\MailMimeParser\Message\IMimePart;
use ZBateson\MailMimeParser\Message\MimePart;
use ZBateson\MailMimeParser\Stream\StreamFactory;
class IMimePartFactory extends IMessagePartFactory
{
public function __construct(
LoggerInterface $logger,
StreamFactory $streamFactory,
PartStreamContainerFactory $partStreamContainerFactory,
protected readonly PartHeaderContainerFactory $partHeaderContainerFactory,
protected readonly PartChildrenContainerFactory $partChildrenContainerFactory,
string $defaultFallbackCharset = 'ISO-8859-1'
) {
parent::__construct($logger, $streamFactory, $partStreamContainerFactory, $defaultFallbackCharset);
}
public function newInstance(?IMimePart $parent = null) : IMimePart
{
$streamContainer = $this->partStreamContainerFactory->newInstance();
$headerContainer = $this->partHeaderContainerFactory->newInstance();
$part = new MimePart(
$parent,
$this->logger,
$streamContainer,
$headerContainer,
$this->partChildrenContainerFactory->newInstance(),
$this->defaultFallbackCharset
);
$streamContainer->setStream($this->streamFactory->newMessagePartStream($part));
return $part;
}
}