Reader::getClassesDefinition()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace Yoghi\Bundle\MaddaBundle\Model;
4
5
/*
6
 * This file is part of the MADDA project.
7
 *
8
 * (c) Stefano Tamagnini <>
9
 *
10
 * This source file is subject to the GPLv3 license that is bundled
11
 * with this source code in the file LICENSE.
12
 */
13
14
 use Arrayzy\ArrayImitator as A;
15
 use Symfony\Component\Yaml\Exception\ParseException;
16
 use Symfony\Component\Yaml\Parser;
17
 use Yoghi\Bundle\MaddaBundle\Exception\MaddaException;
18
19
 /**
20
 * @author Stefano Tamagnini <>
21
 */
22
class Reader
23
{
24
    /**
25
     * Array delle definizioni
26
     *
27
     * @var \Arrayzy\ArrayImitator
28
     */
29
    private $specList;
30
31
    public function __construct()
32
    {
33
        $specListArray = [
34
          'ddd' => [],
35
          'classes' => [],
36
        ];
37
        $this->specList = new A($specListArray);
38
    }
39
40
    public function readYaml($fullPath)
41
    {
42
        if (!file_exists($fullPath)) {
43
            throw new MaddaException("File $fullPath di configurazione inesistente");
0 ignored issues
show
Coding Style Best Practice introduced by
As per coding-style, please use concatenation or sprintf for the variable $fullPath instead of interpolation.

It is generally a best practice as it is often more readable to use concatenation instead of interpolation for variables inside strings.

// Instead of
$x = "foo $bar $baz";

// Better use either
$x = "foo " . $bar . " " . $baz;
$x = sprintf("foo %s %s", $bar, $baz);
Loading history...
44
        }
45
        $yaml = new Parser();
46
        try {
47
            $parsed = $yaml->parse(file_get_contents($fullPath));
48
            if (null != $parsed) {
49
                /* @see https://github.com/bocharsky-bw/Arrayzy#merge*/
50
                $this->specList = $this->specList->merge($parsed, true);
51
            }
52
        } catch (ParseException $e) {
53
            throw new MaddaException($e->getMessage());
54
        }
55
    }
56
57
    /**
58
     * @deprecated
59
     *
60
     * @return array proprietà definite via yaml
61
     */
62
    public function getProperties()
63
    {
64
        return $this->specList->toArray();
65
    }
66
67
    /**
68
     * [getClassesDefinition description]
69
     *
70
     * @return array|false [description]
71
     */
72
    public function getClassesDefinition()
73
    {
74
        return $this->specList['classes'];
75
    }
76
77
    public function getClassDefinitionAttributes($key)
78
    {
79
        $classDefList = new A($this->specList->offsetGet('classes'));
80
81
        return $classDefList->offsetGet($key);
82
    }
83
84
    public function getDomainDefinitionAttributes($key)
85
    {
86
        $domainDefList = new A($this->specList->offsetGet('ddd'));
87
88
        return $domainDefList->offsetGet($key);
89
    }
90
}
91