Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
6 / 6
CRAP
100.00% covered (success)
100.00%
1 / 1
AbstractSession
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
6 / 6
6
100.00% covered (success)
100.00%
1 / 1
 kill
n/a
0 / 0
n/a
0 / 0
0
 setTimedValue
n/a
0 / 0
n/a
0 / 0
0
 setRequestValue
n/a
0 / 0
n/a
0 / 0
0
 count
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getIterator
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 toArray
n/a
0 / 0
n/a
0 / 0
0
 __get
n/a
0 / 0
n/a
0 / 0
0
 __set
n/a
0 / 0
n/a
0 / 0
0
 __isset
n/a
0 / 0
n/a
0 / 0
0
 __unset
n/a
0 / 0
n/a
0 / 0
0
 offsetSet
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 offsetGet
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 offsetExists
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 offsetUnset
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2/**
3 * Pop PHP Framework (http://www.popphp.org/)
4 *
5 * @link       https://github.com/popphp/popphp-framework
6 * @author     Nick Sagona, III <dev@nolainteractive.com>
7 * @copyright  Copyright (c) 2009-2023 NOLA Interactive, LLC. (http://www.nolainteractive.com)
8 * @license    http://www.popphp.org/license     New BSD License
9 */
10
11/**
12 * @namespace
13 */
14namespace Pop\Session;
15
16use ReturnTypeWillChange;
17
18/**
19 * Abstract session class
20 *
21 * @category   Pop
22 * @package    Pop\Session
23 * @author     Nick Sagona, III <dev@nolainteractive.com>
24 * @copyright  Copyright (c) 2009-2023 NOLA Interactive, LLC. (http://www.nolainteractive.com)
25 * @license    http://www.popphp.org/license     New BSD License
26 * @version    3.3.0
27 */
28abstract class AbstractSession implements SessionInterface, \ArrayAccess, \Countable, \IteratorAggregate
29{
30
31    /**
32     * Destroy the session
33     *
34     * @return void
35     */
36    abstract public function kill();
37
38    /**
39     * Set a time-based value
40     *
41     * @param  string $key
42     * @param  mixed  $value
43     * @param  int    $expire
44     * @return AbstractSession
45     */
46    abstract public function setTimedValue($key, $value, $expire = 300);
47
48    /**
49     * Set a request-based value
50     *
51     * @param  string $key
52     * @param  mixed  $value
53     * @param  int    $hops
54     * @return AbstractSession
55     */
56    abstract public function setRequestValue($key, $value, $hops = 1);
57
58    /**
59     * Method to get the count of data in the session
60     *
61     * @return int
62     */
63    public function count(): int
64    {
65
66        return count($this->toArray());
67    }
68
69    /**
70     * Method to iterate over the session
71     *
72     * @return \ArrayIterator
73     */
74    public function getIterator(): \ArrayIterator
75    {
76        return new \ArrayIterator($this->toArray());
77    }
78
79    /**
80     * Get the session values as an array
81     *
82     * @return array
83     */
84    abstract public function toArray();
85
86    /**
87     * Magic get method to return the value of values[$name].
88     *
89     * @param  string $name
90     * @return mixed
91     */
92    abstract public function __get($name);
93
94    /**
95     * Magic set method to set values[$name].
96     *
97     * @param  string $name
98     * @param  mixed $value
99     * @return void
100     */
101    abstract public function __set($name, $value);
102
103    /**
104     * Return the isset value of values[$name].
105     *
106     * @param  string $name
107     * @return boolean
108     */
109    abstract public function __isset($name);
110
111    /**
112     * Unset values[$name].
113     *
114     * @param  string $name
115     * @return void
116     */
117    abstract public function __unset($name);
118
119    /**
120     * ArrayAccess offsetSet
121     *
122     * @param  mixed $offset
123     * @param  mixed $value
124     * @return void
125     */
126    #[ReturnTypeWillChange]
127    public function offsetSet($offset, $value)
128    {
129        $this->__set($offset, $value);
130    }
131
132    /**
133     * ArrayAccess offsetGet
134     *
135     * @param  mixed $offset
136     * @return mixed
137     */
138    #[ReturnTypeWillChange]
139    public function offsetGet($offset)
140    {
141        return $this->__get($offset);
142    }
143
144    /**
145     * ArrayAccess offsetExists
146     *
147     * @param  mixed $offset
148     * @return boolean
149     */
150    public function offsetExists($offset): bool
151    {
152        return $this->__isset($offset);
153    }
154
155    /**
156     * ArrayAccess offsetUnset
157     *
158     * @param  mixed $offset
159     * @return void
160     */
161    #[ReturnTypeWillChange]
162    public function offsetUnset($offset)
163    {
164        $this->__unset($offset);
165    }
166
167}