I'm discovering secrets of PHP. I've found one thing that I don't have answer to. I would like to access variables from super-global $_SESSION in class. Everything works but PHPMD engine to check mess in code is showing me issue.
I'm getting value from $_SESSION super-global this way
$value = $_SESSION["value"];
And I'm editting values of $_SESSION super-global this way
$_SESSION['value'] = "newValue";
PHPMD is showing me issue:
accesses the super-global variable $_SESSION.
So I'm finding another way how to edit and get values of super-global $_SESSION correctly.
I've tried to use filter_input, problem is that when I use INPUT_POST as type(argument 1), PHP shows me warning:
INPUT_SESSION is not yet implemented
Thanks for future answers :)
EDIT (Quotes from phpmd documentation)
Superglobals Since: PHPMD 0.2. Accessing a super-global variable directly is considered a bad practice. These variables should be encapsulated in objects that are provided by a framework, for instance.
As the hint says, accessing the superglobals violates the encapsulation principle
A really basic approach would be:
class SessionObject
{
public $vars;
public function __construct() {
$this->vars = &$_SESSION; //this will still trigger a phpmd warning
}
}
$session = new SessionObject();
$session->vars['value'] = "newValue";
You can also have a look to the Symfony HttpFoundation Component for a full-fledged implementation