OpenGraphGenerator   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 2
dl 0
loc 53
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
B generate() 0 30 7
1
<?php
2
3
namespace Novaway\Component\OpenGraph;
4
5
use Metadata\MetadataFactoryInterface;
6
7
class OpenGraphGenerator
8
{
9
    /** @var MetadataFactoryInterface */
10
    private $factory;
11
12
13
    /**
14
     * Constructor
15
     *
16
     * @param MetadataFactoryInterface $factory
17
     */
18
    public function __construct(MetadataFactoryInterface $factory)
19
    {
20
        $this->factory = $factory;
21
    }
22
23
    /**
24
     * Generate OpenGraph through metadata
25
     *
26
     * @param object $obj
27
     * @return OpenGraphInterface
28
     */
29
    public function generate($obj)
30
    {
31
        if (!is_object($obj)) {
32
            throw new \InvalidArgumentException('OpenGraphGenerator::generate only accept object argument.');
33
        }
34
35
        $openGraph = new OpenGraph();
36
37
        $classType = get_class($obj);
38
39
        $metadata = $this->factory->getMetadataForClass($classType);
40
41
        if (is_array($metadata->namespaces)) {
42
            foreach ($metadata->namespaces as $namespace) {
43
                $openGraph->addNamespace($namespace->prefix, $namespace->uri);
44
            }
45
        }
46
47
        if (is_array($metadata->nodes)) {
48
            foreach ($metadata->nodes as $graphNode) {
49
                if (!empty($graphNode['node']->namespaceUri)) {
50
                    $openGraph->addNamespace($graphNode['node']->namespace, $graphNode['node']->namespaceUri);
51
                }
52
53
                $openGraph->add($graphNode['node']->namespace, $graphNode['node']->tag, $graphNode['object']->getValue($obj));
54
            }
55
        }
56
57
        return $openGraph;
58
    }
59
}
60