Completed
Push — master ( f04c11...b8c10d )
by Hannes
02:40 queued 14s
created

Exporter   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 92.86%

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 6
c 3
b 0
f 0
lcom 1
cbo 2
dl 0
loc 62
ccs 13
cts 14
cp 0.9286
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A setTransformer() 0 6 1
A getContent() 0 4 1
A setItems() 0 10 3
1
<?php
2
namespace Madewithlove\Export\Csv;
3
4
use InvalidArgumentException;
5
use Madewithlove\Export\Csv\Traits\LeagueCsv;
6
use Madewithlove\Export\Csv\Traits\LeagueWriter;
7
use Madewithlove\Export\Exporter as ExporterContract;
8
use Traversable;
9
10
class Exporter implements ExporterContract
11
{
12
    use LeagueCsv;
13
14
    /**
15
     * @var \Madewithlove\Export\Csv\Transformer
16
     */
17
    private $transformer;
18
19
    /**
20
     * @var \Traversable|array
21
     */
22
    private $items = [];
23
24
    /**
25
     * Exporter constructor.
26
     *
27
     * @param \Madewithlove\Export\Csv\Transformer $transformer
28
     * @param \Traversable|array $items
29
     */
30 5
    public function __construct(Transformer $transformer = null, $items = [])
31
    {
32 5
        $this->transformer = $transformer;
33 5
        $this->setItems($items);
34 5
    }
35
36
    /**
37
     * @param \Traversable|array $items
38
     *
39
     * @return static
40
     */
41 5
    public function setItems($items)
42
    {
43 5
        if (!is_array($items) && !$items instanceof Traversable) {
44
            throw new InvalidArgumentException('Expected $items to be array or a \Traversable.');
45
        }
46
47 5
        $this->items = $items;
48
49 5
        return $this;
50
    }
51
52
    /**
53
     * @param \Madewithlove\Export\Csv\Transformer $transformer
54
     *
55
     * @return static
56
     */
57 1
    public function setTransformer(Transformer $transformer)
58
    {
59 1
        $this->transformer = $transformer;
60
61 1
        return $this;
62
    }
63
64
    /**
65
     * @return string
66
     */
67 4
    public function getContent()
68
    {
69 4
        return (string) $this->writer($this->transformer)->insertAll($this->items);
70
    }
71
}
72