| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | 
							- <?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 $boundary;
 
-     private $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
 
-     {
 
-         if (null === $this->boundary) {
 
-             $this->boundary = strtr(base64_encode(random_bytes(6)), '+/', '-_');
 
-         }
 
-         return $this->boundary;
 
-     }
 
- }
 
 
  |