GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 940f7c...e69234 )
by Robert
09:36
created

Dependency   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 98
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 58.62%

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 1
dl 0
loc 98
ccs 17
cts 29
cp 0.5862
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A evaluateDependency() 0 12 3
A getHasChanged() 0 4 1
A isChanged() 0 13 3
A resetReusableData() 0 4 1
A generateReusableHash() 0 8 1
generateDependencyData() 0 1 ?
1
<?php
2
/**
3
 * @link http://www.yiiframework.com/
4
 * @copyright Copyright (c) 2008 Yii Software LLC
5
 * @license http://www.yiiframework.com/license/
6
 */
7
8
namespace yii\caching;
9
10
/**
11
 * Dependency is the base class for cache dependency classes.
12
 *
13
 * Child classes should override its [[generateDependencyData()]] for generating
14
 * the actual dependency data.
15
 *
16
 * For more details and usage information on Cache, see the [guide article on caching](guide:caching-overview).
17
 * 
18
 * @author Qiang Xue <[email protected]>
19
 * @since 2.0
20
 */
21
abstract class Dependency extends \yii\base\Object
22
{
23
    /**
24
     * @var mixed the dependency data that is saved in cache and later is compared with the
25
     * latest dependency data.
26
     */
27
    public $data;
28
    /**
29
     * @var bool whether this dependency is reusable or not. True value means that dependent
30
     * data for this cache dependency will be generated only once per request. This allows you
31
     * to use the same cache dependency for multiple separate cache calls while generating the same
32
     * page without an overhead of re-evaluating dependency data each time. Defaults to false.
33
     */
34
    public $reusable = false;
35
36
    /**
37
     * @var array static storage of cached data for reusable dependencies.
38
     */
39
    private static $_reusableData = [];
40
41
42
    /**
43
     * Evaluates the dependency by generating and saving the data related with dependency.
44
     * This method is invoked by cache before writing data into it.
45
     * @param Cache $cache the cache component that is currently evaluating this dependency
46
     */
47 8
    public function evaluateDependency($cache)
48
    {
49 8
        if ($this->reusable) {
50
            $hash = $this->generateReusableHash();
51
            if (!array_key_exists($hash, self::$_reusableData)) {
52
                self::$_reusableData[$hash] = $this->generateDependencyData($cache);
53
            }
54
            $this->data = self::$_reusableData[$hash];
55
        } else {
56 8
            $this->data = $this->generateDependencyData($cache);
57
        }
58 8
    }
59
60
    /**
61
     * Returns a value indicating whether the dependency has changed.
62
     * @deprecated since version 2.0.11. Will be removed in version 2.1. Use [[isChanged()]] instead.
63
     */
64
    public function getHasChanged($cache)
65
    {
66
        return $this->isChanged($cache);
67
    }
68
69
    /**
70
     * Checks whether the dependency is changed
71
     * @param Cache $cache the cache component that is currently evaluating this dependency
72
     * @return bool whether the dependency has changed.
73
     * @since 2.0.11
74
     */
75 1
    public function isChanged($cache)
76
    {
77 1
        if ($this->reusable) {
78
            $hash = $this->generateReusableHash();
79
            if (!array_key_exists($hash, self::$_reusableData)) {
80
                self::$_reusableData[$hash] = $this->generateDependencyData($cache);
81
            }
82
            $data = self::$_reusableData[$hash];
83
        } else {
84 1
            $data = $this->generateDependencyData($cache);
85
        }
86 1
        return $data !== $this->data;
87
    }
88
89
    /**
90
     * Resets all cached data for reusable dependencies.
91
     */
92 1
    public static function resetReusableData()
93
    {
94 1
        self::$_reusableData = [];
95 1
    }
96
97
    /**
98
     * Generates a unique hash that can be used for retrieving reusable dependency data.
99
     * @return string a unique hash value for this cache dependency.
100
     * @see reusable
101
     */
102 1
    protected function generateReusableHash()
103
    {
104 1
        $data = $this->data;
105 1
        $this->data = null;  // https://github.com/yiisoft/yii2/issues/3052
106 1
        $key = sha1(serialize($this));
107 1
        $this->data = $data;
108 1
        return $key;
109
    }
110
111
    /**
112
     * Generates the data needed to determine if dependency is changed.
113
     * Derived classes should override this method to generate the actual dependency data.
114
     * @param Cache $cache the cache component that is currently evaluating this dependency
115
     * @return mixed the data needed to determine if dependency has been changed.
116
     */
117
    abstract protected function generateDependencyData($cache);
118
}
119