Blame | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace Illuminate\Mail;use Closure;use Illuminate\Container\Container;use Illuminate\Contracts\Filesystem\Factory as FilesystemFactory;use Illuminate\Support\Traits\Macroable;class Attachment{use Macroable;/*** The attached file's filename.** @var string|null*/public $as;/*** The attached file's mime type.** @var string|null*/public $mime;/*** A callback that attaches the attachment to the mail message.** @var \Closure*/protected $resolver;/*** Create a mail attachment.** @param \Closure $resolver* @return void*/private function __construct(Closure $resolver){$this->resolver = $resolver;}/*** Create a mail attachment from a path.** @param string $path* @return static*/public static function fromPath($path){return new static(fn ($attachment, $pathStrategy) => $pathStrategy($path, $attachment));}/*** Create a mail attachment from in-memory data.** @param \Closure $data* @param string $name* @return static*/public static function fromData(Closure $data, $name){return (new static(fn ($attachment, $pathStrategy, $dataStrategy) => $dataStrategy($data, $attachment)))->as($name);}/*** Create a mail attachment from a file in the default storage disk.** @param string $path* @return static*/public static function fromStorage($path){return static::fromStorageDisk(null, $path);}/*** Create a mail attachment from a file in the specified storage disk.** @param string|null $disk* @param string $path* @return static*/public static function fromStorageDisk($disk, $path){return new static(function ($attachment, $pathStrategy, $dataStrategy) use ($disk, $path) {$storage = Container::getInstance()->make(FilesystemFactory::class)->disk($disk);$attachment->as($attachment->as ?? basename($path))->withMime($attachment->mime ?? $storage->mimeType($path));return $dataStrategy(fn () => $storage->get($path), $attachment);});}/*** Set the attached file's filename.** @param string $name* @return $this*/public function as($name){$this->as = $name;return $this;}/*** Set the attached file's mime type.** @param string $mime* @return $this*/public function withMime($mime){$this->mime = $mime;return $this;}/*** Attach the attachment with the given strategies.** @param \Closure $pathStrategy* @param \Closure $dataStrategy* @return mixed*/public function attachWith(Closure $pathStrategy, Closure $dataStrategy){return ($this->resolver)($this, $pathStrategy, $dataStrategy);}/*** Attach the attachment to a built-in mail type.** @param \Illuminate\Mail\Mailable|\Illuminate\Mail\Message|\Illuminate\Notifications\Messages\MailMessage $mail* @return mixed*/public function attachTo($mail){return $this->attachWith(fn ($path) => $mail->attach($path, ['as' => $this->as, 'mime' => $this->mime]),fn ($data) => $mail->attachData($data(), $this->as, ['mime' => $this->mime]));}/*** Determine if the given attachment is equivalent to this attachment.** @param \Illuminate\Mail\Attachment $attachment* @return bool*/public function isEquivalent(Attachment $attachment){return $this->attachWith(fn ($path) => [$path, ['as' => $this->as, 'mime' => $this->mime]],fn ($data) => [$data(), ['as' => $this->as, 'mime' => $this->mime]],) === $attachment->attachWith(fn ($path) => [$path, ['as' => $attachment->as, 'mime' => $attachment->mime]],fn ($data) => [$data(), ['as' => $attachment->as, 'mime' => $attachment->mime]],);}}