Completed
Push — experimental/3.1 ( 147fa8...558b03 )
by chihiro
71:14 queued 45:08
created

RepositoryDefinition::getEntityName()   B

Complexity

Conditions 5
Paths 6

Size

Total Lines 34
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 5

Importance

Changes 0
Metric Value
cc 5
eloc 19
nc 6
nop 0
dl 0
loc 34
ccs 7
cts 7
cp 1
crap 5
rs 8.439
c 0
b 0
f 0
1
<?php
2
/*
3
 * This file is part of EC-CUBE
4
 *
5
 * Copyright(c) 2000-2017 LOCKON CO.,LTD. All Rights Reserved.
6
 *
7
 * http://www.lockon.co.jp/
8
 *
9
 * This program is free software; you can redistribute it and/or
10
 * modify it under the terms of the GNU General Public License
11
 * as published by the Free Software Foundation; either version 2
12
 * of the License, or (at your option) any later version.
13
 *
14
 * This program is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
 * GNU General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU General Public License
20
 * along with this program; if not, write to the Free Software
21
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22
 */
23
24
namespace Eccube\DI\AutoWiring;
25
26
27
use Eccube\DI\ComponentDefinition;
28
29
class RepositoryDefinition extends ComponentDefinition
0 ignored issues
show
introduced by
Missing class doc comment
Loading history...
30
{
31
    private $entityClass;
32
33
    /**
0 ignored issues
show
introduced by
Doc comment for parameter "$id" missing
Loading history...
introduced by
Doc comment for parameter "$refClass" missing
Loading history...
introduced by
Doc comment for parameter "$entityClass" missing
Loading history...
34
     * RepositoryDefinition constructor.
35
     * @param $id
0 ignored issues
show
introduced by
Missing parameter name
Loading history...
36 14
     * @param $refClass
0 ignored issues
show
introduced by
Missing parameter name
Loading history...
37
     * @param $entityClass
0 ignored issues
show
introduced by
Missing parameter name
Loading history...
38 14
     */
39
    public function __construct($id, $refClass, $entityClass)
40
    {
41
        parent::__construct($id, $refClass);
42
        $this->entityClass = $entityClass;
43
    }
44 14
45
    /**
46 14
     * @return string
47 14
     */
48 14
    public function getEntityName()
49 13
    {
50
        // Entityが指定されいれば返す
51
        if ($this->entityClass) {
52 14
            return $this->entityClass;
53 14
        }
54 14
55 14
        $class = $this->getRefClass()->getName();
0 ignored issues
show
Bug introduced by
Consider using $this->getRefClass()->name. There is an issue with getName() and APC-enabled PHP versions.
Loading history...
56
57 14
        $partsOfFqcn = explode('\\', $class);
58
59
        // 同じパッケージのEntityがあれば返す
60
        if (count($partsOfFqcn) > 2) {
61
            $parentNamespace = implode('\\', array_slice($partsOfFqcn, 0, count($partsOfFqcn)-2));
62
            $entityName = preg_replace('/(.*)Repository/', '$1', $partsOfFqcn[count($partsOfFqcn) -1]);
63
            $result = $parentNamespace . '\\Entity\\' . $entityName;
0 ignored issues
show
Coding Style introduced by
Concat operator must not be surrounded by spaces
Loading history...
64
            if (class_exists($result)) {
65
                return $result;
66
            }
67
        }
68
69
        // Eccube\Entity以下のEntityを返す
70
        $ns = 'Eccube\\Entity\\';
71
        if (strpos($class, 'Master') !== false) {
72
            $ns .= 'Master\\';
73
        }
74
75
        $array = explode('\\', $class);
76
        $name = end($array);
77
        $name = str_replace('Repository', '', $name);
78
        $entity = $ns.$name;
79
80
        return $entity;
81
    }
82
}