- var_dump: documentation ( source)
- session_start: documentation ( source)
<?php
class Session
{
private $started = false;
public function start()
{
if ($this->started) {
return;
}
session_start();
$this->started = true;
}
}
class AutostartingSessionBag implements ArrayAccess
{
private $session;
public function __construct(Session $session)
{
$this->session = $session;
}
public function offsetExists($offset)
{
$this->ensureSessionStarted();
return isset($_SESSION[$offset]);
}
public function offsetGet($offset)
{
$this->ensureSessionStarted();
return $_SESSION[$offset];
}
public function offsetSet($offset, $vaue)
{
$this->ensureSessionStarted();
$_SESSION[$offset] = $value;
}
public function offsetUnset($offset)
{
$this->ensureSessionStarted();
unset($_SESSION[$offset]);
}
private function ensureSessionStarted()
{
$this->session->start();
}
}
//var_dump($_SESSION);
$_SESSION = new AutostartingSessionBag(new Session());
//var_dump($_SESSION);
$_SESSION['test'] = 'foobar';
var_dump($_SESSION);