Completed
Push — master ( f7da41...5c2230 )
by Oscar
02:40
created

StorageTrait::stopStorage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
c 1
b 1
f 0
dl 0
loc 7
rs 9.4285
cc 1
eloc 4
nc 1
nop 1
1
<?php
2
3
namespace Psr7Middlewares\Utils;
4
5
use Psr\Http\Message\ServerRequestInterface;
6
use Psr7Middlewares\Middleware;
7
use RuntimeException;
8
9
/**
10
 * Trait to save middleware related things in the current session.
11
 */
12
trait StorageTrait
13
{
14
    use AttributeTrait;
15
16
    /**
17
     * Init the storage array.
18
     *
19
     * @param ServerRequestInterface $request
20
     * @param array                  $storage
21
     * 
22
     * @return ServerRequestInterface
23
     */
24
    private static function startStorage(ServerRequestInterface $request, array $storage)
25
    {
26
        return self::setAttribute($request, Middleware::STORAGE_KEY, (object) $storage);
27
    }
28
29
    /**
30
     * Stop the storage.
31
     *
32
     * @param ServerRequestInterface $request
33
     * 
34
     * @return array
35
     */
36
    private static function stopStorage(ServerRequestInterface $request)
37
    {
38
        $storage = self::getAttribute($request, Middleware::STORAGE_KEY);
39
        self::setAttribute($request, Middleware::STORAGE_KEY, null);
40
41
        return (array) $storage;
42
    }
43
44
    /**
45
     * Returns the value of a storage array.
46
     *
47
     * @param ServerRequestInterface $request
48
     * @param string|null            $key
49
     * 
50
     * @return array
51
     */
52
    private static function &getStorage(ServerRequestInterface $request, $key = null)
53
    {
54
        if (!self::hasAttribute($request, Middleware::STORAGE_KEY)) {
55
            throw new RuntimeException('No session storage initialized');
56
        }
57
58
        $storage = self::getAttribute($request, Middleware::STORAGE_KEY);
59
60
        if (!isset($storage->$key)) {
61
            $storage->$key = [];
62
        }
63
64
        return $storage->$key;
65
    }
66
}
67