Cookie   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 82
Duplicated Lines 0 %

Test Coverage

Coverage 93.75%

Importance

Changes 0
Metric Value
dl 0
loc 82
ccs 15
cts 16
cp 0.9375
rs 10
c 0
b 0
f 0
wmc 11

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getValue() 0 3 2
A create() 0 17 2
A setValue() 0 11 5
A retrieve() 0 13 2
1
<?php namespace Comodojo\Cookies;
2
3
use \Comodojo\Exception\CookieException;
4
5
/**
6
 * Plain cookie
7
 *
8
 * @package     Comodojo Spare Parts
9
 * @author      Marco Giovinazzi <[email protected]>
10
 * @license     MIT
11
 *
12
 * LICENSE:
13
 *
14
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
 * THE SOFTWARE.
21
 */
22
23
class Cookie extends AbstractCookie {
24
25
    /**
26
     * {@inheritdoc}
27
     */
28
    public function setValue($value, $serialize = true) {
29
30
        if ( !is_scalar($value) && $serialize === false ) throw new CookieException("Cannot set non-scalar value without serialization");
31
32
        $cookie_value = $serialize === true ? serialize($value) : $value;
33
34
        if ( strlen($cookie_value) > $this->max_cookie_size ) throw new CookieException("Cookie size larger than ".$this->max_cookie_size." bytes");
35 15
36
        $this->value = $cookie_value;
37 15
38
        return $this;
39 15
40
    }
41 15
42
    /**
43 12
     * {@inheritdoc}
44
     */
45 12
    public function getValue($unserialize = true) {
46
47
        return $unserialize ? unserialize($this->value) : $this->value;
48
49
    }
50
51
    /**
52
     * Static method to quickly create a cookie
53
     *
54
     * @param string $name
55
     *  The cookie name
56 12
     *
57
     * @param array $properties
58 12
     *  Array of properties cookie should have
59
     *
60
     * @return self
61
     * @throws CookieException
62
     */
63
    public static function create($name, array $properties = [], $serialize = true) {
64
65
        try {
66
67
            $class = get_called_class();
68
69
            $cookie = new $class($name);
70
71
            CookieTools::setCookieProperties($cookie, $properties, $serialize);
72
73 3
        } catch (CookieException $ce) {
74
75
            throw $ce;
76
77 3
        }
78
79 3
        return $cookie;
80
81 3
    }
82
83 3
    /**
84
     * Static method to quickly get a cookie
85
     *
86
     * @param string $name
87
     *  The cookie name
88
     *
89 3
     * @return self
90
     * @throws CookieException
91
     */
92
    public static function retrieve($name) {
93
94
        try {
95
96
            $class = get_called_class();
97
98
            $cookie = new $class($name);
99
100
            return $cookie->load();
101
102 3
        } catch (CookieException $ce) {
103
104
            throw $ce;
105
106 3
        }
107
108 3
    }
109
110
}
111