Session::__isset()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
c 0
b 0
f 0
rs 10
nc 1
cc 1
eloc 2
nop 1
1
<?php /** MicroSession */
2
3
namespace Micro\Web;
4
5
/**
6
 * Session is a Session manager
7
 *
8
 * @author Oleg Lunegov <[email protected]>
9
 * @link https://github.com/linpax/microphp-framework
10
 * @copyright Copyright (c) 2013 Oleg Lunegov
11
 * @license https://github.com/linpax/microphp-framework/blob/master/LICENSE
12
 * @package Micro
13
 * @subpackage web
14
 * @version 1.0
15
 * @since 1.0
16
 *
17
 * @property array $flash FlashMessages
18
 */
19
class Session extends \stdClass implements ISession
20
{
21
    /**
22
     * Construct for this class
23
     *
24
     * @access public
25
     *
26
     * @param bool $autoStart
27
     *
28
     * @result void
29
     */
30
    public function __construct($autoStart = false)
31
    {
32
        if ($autoStart === true) {
33
            $this->create();
34
        }
35
    }
36
37
    /**
38
     * Create a new session or load prev session
39
     *
40
     * @access public
41
     * @return void
42
     */
43
    public function create()
44
    {
45
        if (PHP_SESSION_ACTIVE !== session_status()) {
46
            session_start();
47
        }
48
    }
49
50
    /**
51
     * Destroy session
52
     *
53
     * @access public
54
     * @return void
55
     */
56
    public function destroy()
57
    {
58
        if (PHP_SESSION_ACTIVE === session_status()) {
59
            session_unset();
60
            session_destroy();
61
        }
62
    }
63
64
    /**
65
     * Getter session element
66
     *
67
     * @access public
68
     *
69
     * @param string $name element name
70
     *
71
     * @return mixed
72
     */
73
    public function __get($name)
0 ignored issues
show
Coding Style introduced by
__get uses the super-global variable $_SESSION 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...
74
    {
75
        return array_key_exists($name, $_SESSION) ? $_SESSION[$name] : null;
76
    }
77
78
    /**
79
     * Setter session element
80
     *
81
     * @access public
82
     *
83
     * @param string $name element name
84
     * @param mixed $value element value
85
     *
86
     * @return void
87
     */
88
    public function __set($name, $value)
0 ignored issues
show
Coding Style introduced by
__set uses the super-global variable $_SESSION 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...
89
    {
90
        $_SESSION[$name] = $value;
91
    }
92
93
    /**
94
     * Is set session element
95
     *
96
     * @access public
97
     *
98
     * @param string $name element name
99
     *
100
     * @return boolean
101
     */
102
    public function __isset($name)
0 ignored issues
show
Coding Style introduced by
__isset uses the super-global variable $_SESSION 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...
103
    {
104
        return array_key_exists($name, $_SESSION);
105
    }
106
107
    /**
108
     * Unset session element
109
     *
110
     * @access public
111
     *
112
     * @param string $name element name
113
     *
114
     * @return void
115
     */
116
    public function __unset($name)
0 ignored issues
show
Coding Style introduced by
__unset uses the super-global variable $_SESSION 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...
117
    {
118
        if (array_key_exists($name, $_SESSION)) {
119
            unset($_SESSION[$name]);
120
        }
121
    }
122
}
123