1<?php
2
3/*
4 * This file is part of SwiftMailer.
5 * (c) 2004-2009 Chris Corbyn
6 *
7 * For the full copyright and license information, please view the LICENSE
8 * file that was distributed with this source code.
9 */
10
11/**
12 * Attachment class for attaching files to a {@link Swift_Mime_SimpleMessage}.
13 *
14 * @author Chris Corbyn
15 */
16class Swift_Attachment extends Swift_Mime_Attachment
17{
18    /**
19     * Create a new Attachment.
20     *
21     * Details may be optionally provided to the constructor.
22     *
23     * @param string|Swift_OutputByteStream $data
24     * @param string                        $filename
25     * @param string                        $contentType
26     */
27    public function __construct($data = null, $filename = null, $contentType = null)
28    {
29        \call_user_func_array(
30            [$this, 'Swift_Mime_Attachment::__construct'],
31            Swift_DependencyContainer::getInstance()
32                ->createDependenciesFor('mime.attachment')
33            );
34
35        $this->setBody($data, $contentType);
36        $this->setFilename($filename);
37    }
38
39    /**
40     * Create a new Attachment from a filesystem path.
41     *
42     * @param string $path
43     * @param string $contentType optional
44     *
45     * @return self
46     */
47    public static function fromPath($path, $contentType = null)
48    {
49        return (new self())->setFile(
50            new Swift_ByteStream_FileByteStream($path),
51            $contentType
52        );
53    }
54}
55