Completed
Push — feature/issue-101 ( 426b61...bb6cdd )
by Mikaël
49:18
created

AbstractDocument   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 1
dl 0
loc 54
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
contentClass() 0 1 ?
A setContent() 0 12 2
A getContent() 0 4 1
A toJsonSerialize() 0 4 1
1
<?php
2
3
namespace WsdlToPhp\PackageGenerator\Model;
4
5
use WsdlToPhp\PackageGenerator\Generator\Generator;
6
use WsdlToPhp\PackageGenerator\WsdlHandler\Wsdl as WsdlContent;
7
8
abstract class AbstractDocument extends AbstractModel
9
{
10
    /**
11
     * The content
12
     * @var WsdlContent
13
     */
14
    protected $content;
15
    /**
16
     * @param Generator $generator
17
     * @param string $name
18
     * @param string $content
19
     */
20
    public function __construct(Generator $generator, $name, $content)
21
    {
22
        parent::__construct($generator, $name);
23
        $this->setContent($content);
24
    }
25
    /**
26
     * @return string
27
     */
28
    abstract protected function contentClass();
29
    /**
30
     * @param string $content wsdl/schema content
31
     * @return AbstractDocument
32
     */
33
    protected function setContent($content)
34
    {
35
        $contentClass = $this->contentClass();
36
        $domDocument = new \DOMDocument('1.0', 'utf-8');
37
        try {
38
            $domDocument->loadXML($content, LIBXML_NOERROR);
39
            $this->content = new $contentClass($domDocument, $this->generator);
40
        } catch (\Exception $exception) {
41
            throw new \InvalidArgumentException(sprintf('Unable to load document at "%s"', $this->getName()), __LINE__, $exception);
42
        }
43
        return $this;
44
    }
45
    /**
46
     *
47
     * @return \WsdlToPhp\PackageGenerator\WsdlHandler\AbstractDocument
48
     */
49
    public function getContent()
50
    {
51
        return $this->content;
52
    }
53
    /**
54
     * {@inheritDoc}
55
     * @see \WsdlToPhp\PackageGenerator\Model\AbstractModel::toJsonSerialize()
56
     */
57
    protected function toJsonSerialize()
58
    {
59
        return array();
60
    }
61
}
62