Completed
Push — master ( d1b5d6...d751a6 )
by Sebastian
04:20
created

UploadedFilesCollection::hasFile()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
namespace Kartenmacherei\RestFramework\Request\UploadedFile;
3
4
class UploadedFilesCollection
5
{
6
    /**
7
     * @var UploadedFile[]
8
     */
9
    private $files;
10
11
    /**
12
     * @param array $files
13
     */
14
    public function __construct(array $files)
15
    {
16
        $this->files = $files;
17
    }
18
19
    /**
20
     * @param string $name
21
     * @return bool
22
     */
23
    public function hasFile(string $name): bool
24
    {
25
        return array_key_exists($name, $this->files);
26
    }
27
28
    /**
29
     * @param string $name
30
     * @return UploadedFile
31
     * @throws UploadedFilesException
32
     */
33
    public function getFile(string $name): UploadedFile
34
    {
35
        if (!$this->hasFile($name)) {
36
            throw new UploadedFilesException(sprintf('Uploaded file %s not found', $name));
37
        }
38
        return $this->files[$name];
39
    }
40
41
    /**
42
     * @return UploadedFilesCollection
43
     */
44
    public static function fromSuperGlobals(): UploadedFilesCollection
45
    {
46
        $files = [];
47
        foreach ($_FILES as $name => $data) {
48
            $files[$name] = new UploadedFile(
49
                $data['name'],
50
                $data['type'],
51
                $data['size'],
52
                $data['tmp_name']
53
            );
54
        }
55
        return new self($files);
56
    }
57
}
58