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
Pull Request — master (#68)
by Vermeulen
02:15
created

Ram   A

Complexity

Total Complexity 21

Size/Duplication

Total Lines 192
Duplicated Lines 13.54 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 8
Bugs 4 Features 1
Metric Value
wmc 21
c 8
b 4
f 1
lcom 1
cbo 0
dl 26
loc 192
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
B __construct() 0 26 5
A setVal() 0 20 4
B majExpire() 0 23 4
A ifExists() 14 14 3
A delete() 12 12 3
A getVal() 0 11 2

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
 * Classe en rapport avec Memcache
4
 * 
5
 * @author Vermeulen Maxime <[email protected]>
6
 * @version 1.0
7
 */
8
9
namespace BFW;
10
11
use \Exception;
12
13
/**
14
 * Gestion du serveur avec memcache
15
 * @package bfw
16
 */
17
class Ram implements \BFWInterface\IRam
18
{
19
    /**
20
     * @var $_kernel L'instance du Kernel
21
     */
22
    protected $_kernel;
23
    
24
    /**
25
     * @var $server_connect Permet de savoir si on est connecté au serveur.
26
     */
27
    protected $server_connect = false;
28
    
29
    /**
30
     * @var $Server Le serveur
31
     */
32
    protected $Server;
33
    
34
    /**
35
     * @var $debug Permet d'activer ou non le mode débug
36
     */
37
    public $debug = false;
38
    
39
    
40
    /**
41
     * Constructeur
42
     * Se connecte au serveur memcache indiqué
43
     * 
44
     * @param string  $host l'host du serveur memcache
45
     * @param integer $port le port du serveur memcache
46
     * 
47
     * @throws Exception : Si l'extension php-memcache n'est présente
48
     *                     Si les infos sont pas au bon format
49
     *                     Si la connexion échoue
50
     */
51
    public function __construct($host, $port)
52
    {
53
        $this->_kernel = getKernel();
54
        
55
        //Vérification si l'extension memcache est bien loadé
56
        if(!extension_loaded('memcache'))
57
        {
58
            throw new Exception('Memcache php extension is not loaded.');
59
        }
60
        
61
        //Vérifie que les infos sont bien au bon typage
62
        if(!(is_string($host) && is_integer($port)))
63
        {
64
            throw new Exception('Memcache connexion informations format is not correct.');
65
        }
66
        
67
        $this->Server = new \Memcache;
68
        
69
        //Se connexion ... exception si fail
70
        if($this->Server->connect($host, $port) === false)
71
        {
72
            throw new Exception('Memcache connect fail.');
73
        }
74
        
75
        $this->server_connect = true;
76
    }
77
    
78
    /**
79
     * Permet de stocker une clé en mémoire ou de la mettre à jour
80
     * 
81
     * @param string $key    Clé correspondant à la valeur
82
     * @param mixed  $data   Les nouvelles données. Il n'est pas possible de stocker une valeur de type resource.
83
     * @param int    $expire (default: 0) Le temps en seconde avant expiration. 0 illimité, max 30jours
84
     * 
85
     * @throws \Exception Erreur dsans les paramètres donnée à la méthode
86
     * 
87
     * @return bool
88
     */
89
    public function setVal($key, $data, $expire=0)
90
    {
91
        $verifParams = verifTypeData(array(
92
            array('type' => 'string', 'data' => $key),
93
            array('type' => 'int',    'data' => $expire)
94
        ));
95
        
96
        if(!$verifParams || gettype($data) == 'resource')
97
        {
98
            throw new \Exception('Erreur dans les paramètres de Ram->setVal()');
99
        }
100
        
101
        $valDataServer = $this->Server->get($key);
102
        if($valDataServer !== false)
103
        {
104
            return $this->Server->replace($key, $data, 0, $expire);
105
        }
106
        
107
        return $this->Server->set($key, $data, 0, $expire);
108
    }
109
    
110
    /**
111
     * On modifie le temps avant expiration des infos sur le serveur memcached pour une clé choisie.
112
     * 
113
     * @param string $key la clé disignant les infos concerné
114
     * @param int    $exp le nouveau temps avant expiration (0: pas d'expiration, max 30jours)
115
     * 
116
     * @throws \Exception Erreur dsans les paramètres donnée à la méthode
117
     * 
118
     * @return boolean|null
119
     */
120
    public function majExpire($key, $exp)
121
    {
122
        $verifParams = verifTypeData(array(
123
            array('type' => 'string', 'data' => $key),
124
            array('type' => 'int',    'data' => $exp)
125
        ));
126
        
127
        if(!$verifParams)
128
        {
129
            throw new \Exception('Erreur dans les paramètres de Ram->majExpire()');
130
        }
131
        
132
        $ret = $this->Server->get($key); //Récupère la valeur
133
        
134
        //On la "modifie" en remettant la même valeur mais en changeant le temps
135
        //avant expiration si une valeur a été retournée
136
        if($ret !== false && $this->Server->replace($key, $ret, 0, $exp))
137
        {
138
            return true;
139
        }
140
        
141
        return false;
142
    }
143
    
144
    /**
145
     * Permet de savoir si la clé existe
146
     * 
147
     * @param string $key la clé disignant les infos concernées
148
     * 
149
     * @throws \Exception Erreur dsans les paramètres donnée à la méthode
150
     * 
151
     * @return bool
152
     */
153 View Code Duplication
    public function ifExists($key)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
154
    {
155
        $verifParams = verifTypeData(array(array('type' => 'string', 'data' => $key)));
156
        
157
        if(!$verifParams)
158
        {
159
            throw new \Exception('Erreur dans les paramètres de Ram->ifExists()');
160
        }
161
        
162
        $ret = $this->Server->get($key); //Récupère la valeur
163
        
164
        if($ret === false) {return false;}
165
        return true;
166
    }
167
    
168
    /**
169
     * Supprime une clé
170
     * 
171
     * @param string $key la clé disignant les infos concernées
172
     * 
173
     * @return bool
174
     */
175 View Code Duplication
    public function delete($key)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
176
    {
177
        $verifParams = verifTypeData(array(array('type' => 'string', 'data' => $key)));
178
        
179
        if(!$verifParams)
180
        {
181
            throw new \Exception('Erreur dans les paramètres de Ram->delete()');
182
        }
183
        
184
        if($this->Server->delete($key)) {return true;}
185
        return false;
186
    }
187
    
188
    /**
189
     * Permet de retourner la valeur d'une clé.
190
     * 
191
     * @param string $key Clé correspondant à la valeur
192
     * 
193
     * @throws \Exception Erreur dsans les paramètres donnée à la méthode
194
     * 
195
     * @return mixed La valeur demandée
196
     */
197
    public function getVal($key)
198
    {
199
        $verifParams = verifTypeData(array(array('type' => 'string', 'data' => $key)));
200
        
201
        if(!$verifParams)
202
        {
203
            throw new \Exception('Erreur dans les paramètres de Ram->getVal()');
204
        }
205
        
206
        return $this->Server->get($key);
207
    }
208
}
209