NamingHelper   A
last analyzed

Complexity

Total Complexity 15

Size/Duplication

Total Lines 78
Duplicated Lines 23.08 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 15
c 1
b 0
f 0
lcom 0
cbo 2
dl 18
loc 78
ccs 28
cts 28
cp 1
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getCompositeTag() 0 15 4
A getObjectTag() 9 9 4
A getCommonTag() 9 9 4
A getCacheKeyById() 0 11 3

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
namespace DevGroup\TagDependencyHelper;
4
5
use Yii;
6
use yii\base\InvalidParamException;
7
use yii\db\ActiveRecord;
8
9
class NamingHelper
10
{
11
    /**
12
     * Get object tag name.
13
     * @param string|ActiveRecord $class
14
     * @param mixed $id
15
     * @return string
16
     * @throws \yii\base\InvalidParamException
17
     */
18 2 View Code Duplication
    public static function getObjectTag($class, $id)
19
    {
20 2
        if (is_object($class) && $class instanceof ActiveRecord) {
21 1
            $class = $class->className();
22 2
        } elseif (!is_string($class)) {
23 1
            throw new InvalidParamException('Param $class must be a string or an object.');
24
        }
25 2
        return $class . '[ObjectTag:' . self::getCacheKeyById($id) . ']';
26
    }
27
28
    /**
29
     * Get common tag name.
30
     * @param string|ActiveRecord $class
31
     * @return string
32
     * @throws \yii\base\InvalidParamException
33
     */
34 2 View Code Duplication
    public static function getCommonTag($class)
35
    {
36 2
        if (is_object($class) && $class instanceof ActiveRecord) {
37 1
            $class = $class->className();
38 2
        } elseif (!is_string($class)) {
39 1
            throw new InvalidParamException('Param $class must be a string or an object.');
40
        }
41 2
        return $class . '[CommonTag]';
42
    }
43
44
    /**
45
     * Get composite tag name from model fields.
46
     * @param string|ActiveRecord $class
47
     * @param array $fields - ['field_model' => 'value']
48
     * @return string
49
     * @throws \yii\base\InvalidParamException
50
     */
51 1
    public static function getCompositeTag($class, $fields)
52
    {
53 1
        if (is_object($class) && $class instanceof ActiveRecord) {
54 1
            $class = $class->className();
55 1
        } elseif (!is_string($class)) {
56 1
            throw new InvalidParamException('Param $class must be a string or an object.');
57
        }
58
59
        return $class .
60 1
            '[CompositeTag(' .
61 1
            self::getCacheKeyById($fields, true) .
62 1
            '):(' .
63 1
            self::getCacheKeyById($fields) .
64 1
            ')]';
65
    }
66
67
    /**
68
     * Return string for cache-key from varios primary key
69
     * @param mixed $id
70
     * @param bool $keys if true, will used keys array for build the cache key
71
     * @return string
72
     */
73 2
    public static function getCacheKeyById($id, $keys = false)
74
    {
75 2
        if (is_array($id)) {
76 1
            ksort($id);
77 1
            $id = ($keys) ? array_keys($id) : array_values($id);
78
79 1
            return implode('|', $id);
80
        }
81
82 2
        return (string)$id;
83
    }
84
85
86
}
87