PHP 8.3.31
Preview: AbstractMultipartPart.php Size: 2.23 KB
/home/getspomw/royalsquad.us/vendor/symfony/mime/Part/AbstractMultipartPart.php

<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Symfony\Component\Mime\Part;

use Symfony\Component\Mime\Header\Headers;

/**
 * @author Fabien Potencier <fabien@symfony.com>
 */
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)), '+/', '-_');
    }
}

Directory Contents

Dirs: 1 × Files: 8

Name Size Perms Modified Actions
Multipart DIR
- drwxrwxrwx 2026-04-21 21:31:49
Edit Download
2.23 KB lrw-rw-rw- 2025-09-17 06:53:20
Edit Download
1.49 KB lrw-rw-rw- 2025-09-17 06:53:20
Edit Download
4.50 KB lrw-rw-rw- 2025-09-17 06:53:20
Edit Download
5.18 KB lrw-r--r-- 2026-04-26 11:34:58
Edit Download
1.07 KB lrw-rw-rw- 2025-09-17 06:53:20
Edit Download
1.36 KB lrw-rw-rw- 2025-09-17 06:53:20
Edit Download
2.34 KB lrw-rw-rw- 2025-09-17 06:53:20
Edit Download
7.80 KB lrw-rw-rw- 2025-09-17 06:53:20
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).