session = &$_SESSION; // Reference $_SESSION to keep them in sync if (!isset($this->session['token'])) { $this->setToken(); } if (!isset($this->session['messages'])) { $this->session['messages'] = []; // Always ensure messages is an array } if (!isset($this->session['formData'])) { $this->session['formData'] = []; // Initialize formData } if (!isset($this->session['errors'])) { $this->session['errors'] = []; // Initialize errors } } public function setToken() { $this->session['token'] = bin2hex(random_bytes(32)); } public function set($key, $value) { $this->session[$key] = $value; } public function get($key) { return isset($this->session[$key]) ? $this->session[$key] : null; } public function flash($key) { $return = $this->get($key); $this->delete($key); return $return; } public function debug() { return $this->session; } public function delete($key) { if (isset($this->session[$key])) { unset($this->session[$key]); } } public function write() { // No need to assign to $_SESSION since $this->session is a reference session_write_close(); } public function kill() { $this->session = []; $_SESSION = []; session_destroy(); } }