Completed
Branch full-rewrite (4754d3)
by Thibaud
03:13
created

ZippyFactory::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 7
rs 9.4285
cc 1
eloc 5
nc 1
nop 0
1
<?php
2
3
namespace Alchemy\Zippy;
4
5
use Alchemy\Zippy\Adapter\Adapter;
6
use Alchemy\Zippy\Adapter\FileAdapter;
7
use Alchemy\Zippy\Adapter\Pecl\RarAdapter;
8
use Alchemy\Zippy\Adapter\Pear\TarAdapter;
9
use Alchemy\Zippy\Adapter\Pecl\ZipAdapter;
10
use Alchemy\Zippy\Package\IteratorResolver\ProtocolBasedIteratorResolver;
11
use Alchemy\Zippy\Resource\ReaderResolver\ProtocolBasedReaderResolver;
12
use Alchemy\Zippy\Resource\WriterResolver\ProtocolBasedWriterResolver;
13
14
class ZippyFactory
15
{
16
    /**
17
     * @var Adapter[]
18
     */
19
    private $adapters = [];
20
21
    public function __construct()
22
    {
23
        $this->adapters[] = new FileAdapter();
24
        $this->adapters[] = new TarAdapter();
25
        $this->adapters[] = new RarAdapter();
26
        $this->adapters[] = new ZipAdapter();
27
    }
28
29
    public function create()
30
    {
31
        $iteratorResolver = new ProtocolBasedIteratorResolver();
32
        $readerResolver = new ProtocolBasedReaderResolver();
33
        $writerResolver = new ProtocolBasedWriterResolver();
34
35
        foreach ($this->adapters as $adapter) {
36
            $adapter->registerProtocols($iteratorResolver, $readerResolver, $writerResolver);
37
        }
38
39
        return new Zippy($readerResolver, $writerResolver, $iteratorResolver);
40
    }
41
}
42