FlystemProvider::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
c 1
b 0
f 1
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
3
namespace Mosaic\Filesystem\Providers;
4
5
use Interop\Container\Definition\DefinitionProviderInterface;
6
use League\Flysystem\Filesystem as Flystem;
7
use League\Flysystem\MountManager;
8
use Mosaic\Filesystem\Adapters\Flysystem\DiskResolverCollection;
9
use Mosaic\Filesystem\Adapters\Flysystem\Filesystem;
10
use Mosaic\Filesystem\Filesystem as FilesystemInterface;
11
12
class FlystemProvider implements DefinitionProviderInterface
13
{
14
    /**
15
     * @var DiskResolverCollection
16
     */
17
    private $collection;
18
19
    /**
20
     * @param DiskResolverCollection $collection
21
     */
22 3
    public function __construct(DiskResolverCollection $collection)
23
    {
24 3
        $this->collection = $collection;
25 3
    }
26
27
    /**
28
     * Returns the definition to register in the container.
29
     *
30
     * Definitions must be indexed by their entry ID. For example:
31
     *
32
     *     return [
33
     *         'logger' => ...
34
     *         'mailer' => ...
35
     *     ];
36
     *
37
     * @return array
38
     */
39
    public function getDefinitions()
40
    {
41
        return [
42 1
            FilesystemInterface::class => function () {
43
44
                $manager = new MountManager();
45
46
                foreach ($this->collection->all() as $name => $adapter) {
47
                    $manager->mountFilesystem($name, new Flystem(
48
                        $adapter()
49
                    ));
50
                }
51
52
                return new Filesystem(
53
                    $manager
54
                );
55 1
            }
56
        ];
57
    }
58
}
59