Completed
Pull Request — develop (#27)
by Chris
02:25
created

AttrList::createTransformer()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 13
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 8
nc 2
nop 0
1
<?php
2
3
namespace Chrisyue\PhpM3u8\Transformer\Factory\Annotation;
4
5
use Chrisyue\PhpM3u8\Transformer\Factory\FactoryInterface;
6
use Chrisyue\PhpM3u8\Transformer\AttrListTransformer;
7
use Chrisyue\PhpM3u8\Transformer\KvTransformer;
8
use Chrisyue\PhpM3u8\DataAccessor\ObjectAccessor;
9
use Chrisyue\PhpM3u8\PropertyReader\PropertyReader;
10
use Chrisyue\PhpM3u8\Transformer\AttrTransformers;
11
use Chrisyue\PhpM3u8\PropertyReader\PropertyReaderAwareInterface;
12
use Chrisyue\PhpM3u8\PropertyReader\PropertyReaderInterface;
13
use Chrisyue\PhpM3u8\PropertyReader\PropertyReaderAwareTrait;
14
15
/**
16
 * @Annotation
17
 */
18
class AttrList implements FactoryInterface, PropertyReaderAwareInterface
19
{
20
    use PropertyReaderAwareTrait;
21
22
    private $class;
23
24
    public function __construct(array $options)
25
    {
26
        $this->class = $options['class'];
27
    }
28
29
    public function createTransformer()
30
    {
31
        $attrTransformers = new AttrTransformers();
32
        foreach ($this->reader->read($this->class, FactoryInterface::class) as $key => $factory) {
33
            $attrTransformers->set($key, $factory->createTransformer());
34
        }
35
36
        return new AttrListTransformer(
37
            new KvTransformer(),
38
            $attrTransformers,
39
            new ObjectAccessor(new $this->class)
40
        );
41
    }
42
43
    public function createReverser()
44
    {
45
    }
46
}
47