Completed
Push — master ( 9b5005...0cce4e )
by Loïc
14s queued 12s
created

File::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
/*
4
 * This file is part of AppName.
5
 *
6
 * (c) Monofony
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace App\Entity\Media;
15
16
use App\Entity\IdentifiableTrait;
17
use Doctrine\ORM\Mapping as ORM;
18
use Sylius\Component\Resource\Model\ResourceInterface;
19
use Sylius\Component\Resource\Model\TimestampableTrait;
20
use Symfony\Component\Serializer\Annotation as Serializer;
21
22
/**
23
 * @ORM\MappedSuperclass
24
 */
25
abstract class File implements FileInterface, ResourceInterface
26
{
27
    use IdentifiableTrait;
28
    use TimestampableTrait;
29
30
    /** @var \SplFileInfo|null */
31
    protected $file;
32
33
    /**
34
     * @var string|null
35
     *
36
     * @ORM\Column(type="string")
37
     *
38
     * @Serializer\Groups({"Default", "Detailed"})
39
     */
40
    protected $path;
41
42
    /**
43
     * @var \DateTimeInterface|null
44
     *
45
     * @ORM\Column(type="datetime")
46
     */
47
    protected $createdAt;
48
49
    /**
50
     * @var \DateTimeInterface|null
51
     *
52
     * @ORM\Column(type="datetime", nullable=true)
53
     */
54
    protected $updatedAt;
55
56
    public function __construct()
57
    {
58
        $this->createdAt = new \DateTime();
59
    }
60
61
    /**
62
     * {@inheritdoc}
63
     */
64
    public function getFile(): ?\SplFileInfo
65
    {
66
        return $this->file;
67
    }
68
69
    /**
70
     * {@inheritdoc}
71
     */
72
    public function setFile(?\SplFileInfo $file): void
73
    {
74
        $this->file = $file;
75
76
        // VERY IMPORTANT:
77
        // It is required that at least one field changes if you are using Doctrine,
78
        // otherwise the event listeners won't be called and the file is lost
79
        if ($file) {
80
            // if 'updatedAt' is not defined in your entity, use another property
81
            $this->updatedAt = new \DateTime('now');
82
        }
83
    }
84
85
    /**
86
     * {@inheritdoc}
87
     */
88
    public function getPath(): ?string
89
    {
90
        return $this->path;
91
    }
92
93
    /**
94
     * {@inheritdoc}
95
     */
96
    public function setPath(?string $path): void
97
    {
98
        $this->path = $path;
99
    }
100
}
101