FileDriver::_get()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 8
nc 2
nop 1
dl 0
loc 13
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace OpenOauth\Core\DatabaseDriver;
4
5
use OpenOauth\Core\DatabaseDriver\BaseDriver;
6
7
/**
8
 * 文件缓存驱动.
9
 *
10
 */
11
class FileDriver extends BaseDriver
12
{
13
    /**
14
     * @param string $name
15
     *
16
     * @return bool|null|string|void
17
     */
18
    public function _get($name)
19
    {
20
        $name = $this->createFileName($name);
21
        $file = $this->databaseDir . '/' . $name;
22
        $data = @file_get_contents($file);
23
        if (!$data) {
24
            return false;
25
        }
26
27
        $data = $this->unpackData($data);
28
29
        return $data;
30
    }
31
32
    /**
33
     * 根据缓存名 设置缓存值和超时时间.
34
     *
35
     * @param string $name  缓存名
36
     * @param mixed  $value 缓存值
37
     *
38
     * @return boolean;
0 ignored issues
show
Documentation introduced by
The doc-type boolean; could not be parsed: Expected "|" or "end of type", but got ";" at position 7. (view supported doc-types)

This check marks PHPDoc comments that could not be parsed by our parser. To see which comment annotations we can parse, please refer to our documentation on supported doc-types.

Loading history...
39
     */
40
    public function _set($name, $value)
41
    {
42
        $name = $this->createFileName($name);
43
        $data = $this->packData($value);
44
45
        return file_put_contents($this->databaseDir . '/' . $name, $data);
46
    }
47
48
    /**
49
     * 数据打包.
50
     *
51
     * @param void $data 缓存值
52
     *
53
     * @return string
54
     */
55
    private function packData($data)
56
    {
57
        $str         = [];
58
        $str['data'] = $data;
59
        $str         = serialize($str);
60
61
        return $str;
62
    }
63
64
    /**
65
     * @param $data
66
     *
67
     * @return bool
68
     */
69
    private function unpackData($data)
70
    {
71
        $arr = unserialize($data);
72
73
        return $arr['data'];
74
    }
75
76
    /**
77
     * 创建缓存文件名.
78
     *
79
     * @param string $name 缓存名
80
     *
81
     * @return string
82
     */
83
    private function createFileName($name)
84
    {
85
        return md5($name);
86
    }
87
}
88