NamingStrategy   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 0
dl 0
loc 76
rs 10
c 0
b 0
f 0

8 Methods

Rating   Name   Duplication   Size   Complexity  
A classToTableName() 0 4 1
A propertyToColumnName() 0 4 1
A embeddedFieldToColumnName() 0 4 1
A referenceColumnName() 0 4 1
A joinColumnName() 0 4 1
A joinTableName() 0 4 1
A normalizeClassName() 0 4 1
A joinKeyColumnName() 0 4 2
1
<?php namespace Nord\Lumen\Doctrine\ORM;
2
3
use Doctrine\ORM\Mapping\NamingStrategy as NamingStrategyContract;
4
5
class NamingStrategy implements NamingStrategyContract
6
{
7
8
    /**
9
     * @inheritdoc
10
     */
11
    public function classToTableName($className)
12
    {
13
        return str_plural($this->normalizeClassName($className));
14
    }
15
16
17
    /**
18
     * @inheritdoc
19
     */
20
    public function propertyToColumnName($propertyName, $className = null)
21
    {
22
        return snake_case($propertyName);
23
    }
24
25
26
    /**
27
     * @inheritdoc
28
     */
29
    public function embeddedFieldToColumnName($propertyName, $embeddedColumnName, $className = null, $embeddedClassName = null)
30
    {
31
        return $propertyName . '_' . $embeddedColumnName;
32
    }
33
34
35
    /**
36
     * @inheritdoc
37
     */
38
    public function referenceColumnName()
39
    {
40
        return 'id';
41
    }
42
43
44
    /**
45
     * @inheritdoc
46
     */
47
    public function joinColumnName($propertyName)
48
    {
49
        return snake_case(str_singular($propertyName)) . '_' . $this->referenceColumnName();
50
    }
51
52
53
    /**
54
     * @inheritdoc
55
     */
56
    public function joinTableName($sourceEntity, $targetEntity, $propertyName = null)
57
    {
58
        return $this->normalizeClassName($sourceEntity) . '_' . $this->normalizeClassName($targetEntity);
59
    }
60
61
62
    /**
63
     * @inheritdoc
64
     */
65
    public function joinKeyColumnName($entityName, $referencedColumnName = null)
66
    {
67
        return $this->normalizeClassName($entityName) . '_' . ($referencedColumnName ?: $this->referenceColumnName());
68
    }
69
70
71
    /**
72
     * @param string $className
73
     *
74
     * @return string
75
     */
76
    private function normalizeClassName($className)
77
    {
78
        return snake_case(class_basename($className));
79
    }
80
}
81