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

ZippyFactory   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 9

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 28
wmc 3
lcom 1
cbo 9
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A create() 0 12 2
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