class AbstractMultipartPart
@author Fabien Potencier <fabien@symfony.com>
Hierarchy
- class \Symfony\Component\Mime\Part\AbstractPart
- class \Symfony\Component\Mime\Part\AbstractMultipartPart extends \Symfony\Component\Mime\Part\AbstractPart
Expanded class hierarchy of AbstractMultipartPart
5 files declare their use of AbstractMultipartPart
- AlternativePart.php in vendor/
symfony/ mime/ Part/ Multipart/ AlternativePart.php - DigestPart.php in vendor/
symfony/ mime/ Part/ Multipart/ DigestPart.php - FormDataPart.php in vendor/
symfony/ mime/ Part/ Multipart/ FormDataPart.php - MixedPart.php in vendor/
symfony/ mime/ Part/ Multipart/ MixedPart.php - RelatedPart.php in vendor/
symfony/ mime/ Part/ Multipart/ RelatedPart.php
File
-
vendor/
symfony/ mime/ Part/ AbstractMultipartPart.php, line 19
Namespace
Symfony\Component\Mime\PartView source
abstract class AbstractMultipartPart extends AbstractPart {
private ?string $boundary = null;
private array $parts = [];
public function __construct(AbstractPart ...$parts) {
parent::__construct();
foreach ($parts as $part) {
$this->parts[] = $part;
}
}
/**
* @return AbstractPart[]
*/
public function getParts() : array {
return $this->parts;
}
public function getMediaType() : string {
return 'multipart';
}
public function getPreparedHeaders() : Headers {
$headers = parent::getPreparedHeaders();
$headers->setHeaderParameter('Content-Type', 'boundary', $this->getBoundary());
return $headers;
}
public function bodyToString() : string {
$parts = $this->getParts();
$string = '';
foreach ($parts as $part) {
$string .= '--' . $this->getBoundary() . "\r\n" . $part->toString() . "\r\n";
}
$string .= '--' . $this->getBoundary() . "--\r\n";
return $string;
}
public function bodyToIterable() : iterable {
$parts = $this->getParts();
foreach ($parts as $part) {
(yield '--' . $this->getBoundary() . "\r\n");
yield from $part->toIterable();
(yield "\r\n");
}
(yield '--' . $this->getBoundary() . "--\r\n");
}
public function asDebugString() : string {
$str = parent::asDebugString();
foreach ($this->getParts() as $part) {
$lines = explode("\n", $part->asDebugString());
$str .= "\n └ " . array_shift($lines);
foreach ($lines as $line) {
$str .= "\n |" . $line;
}
}
return $str;
}
private function getBoundary() : string {
return $this->boundary ??= strtr(base64_encode(random_bytes(6)), '+/', '-_');
}
}