Test Setup Failed
Push — master ( 381af6...afb032 )
by Carsten
02:23
created

PimpleServiceProvider::__construct()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 6
rs 9.4285
cc 3
eloc 4
nc 4
nop 3
1
<?php
2
namespace Germania\AuraSessionMiddleware;
3
4
use Pimple\Container;
5
use Pimple\ServiceProviderInterface;
6
7
use Aura\Session\SessionFactory;
8
9
use Psr\Log\NullLogger;
10
use Psr\Log\LoggerInterface;
11
12
class PimpleServiceProvider implements ServiceProviderInterface
13
{
14
15
    /**
16
     * @var string
17
     */
18
    public $session_name;
19
20
21
    /**
22
     * @var string
23
     */
24
    public $request_attribute_name;
25
26
27
    /**
28
     * @var LoggerInterface
29
     */
30
    public $logger;
31
32
33
34
    /**
35
     * @param string $session_name            The Session (segment) name
36
     * @param string $request_attribute_name  PSR7 Request attribute name, defaults to "session"
37
     * @param LoggerInterface $logger         Optional: PSR3 Logger instance
38
     */
39
    public function __construct( $session_name, $request_attribute_name = "session", LoggerInterface $logger = null )
40
    {
41
        $this->session_name = $session_name ?: get_class($this);
42
        $this->request_attribute_name = $request_attribute_name;
43
        $this->logger = $logger ?: new NullLogger;
44
    }
45
46
47
    /**
48
     * @param  Container $dic Pimple Container
49
     * @implements ServiceProviderInterface
50
     */
51
    public function register(Container $dic)
0 ignored issues
show
Coding Style introduced by
register uses the super-global variable $_COOKIE which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
52
    {
53
54
        /**
55
         * @return Aura SessionSegment
56
         */
57
        $dic['Session'] = function( $dic ) {
0 ignored issues
show
Unused Code introduced by
The parameter $dic is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
58
            $session_factory = new SessionFactory;
59
            $session = $session_factory->newInstance( $_COOKIE );
60
            return $session->getSegment( $this->session_name );
61
        };
62
63
64
        /**
65
         * @return  \Psr\Log\LoggerInterface
66
         */
67
        $dic['Session.Logger'] = function( $dic ) {
0 ignored issues
show
Unused Code introduced by
The parameter $dic is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
68
            return $this->logger;
69
        };
70
71
72
73
        /**
74
         * @return Callable|AuraSessionSegmentMiddleware
75
         */
76
        $dic['Session.Middleware'] = function( $dic ) {
77
            $session = $dic['Session'];
78
            $logger  = $dic['Session.Logger'];
79
80
            $middleware = new AuraSessionSegmentMiddleware( $session, $logger );
81
            $middleware->setRequestAttributeName( $this->request_attribute_name );
82
            return $middleware;
83
        };
84
85
    }
86
}
87
88