startSession(); return self::$instance; } /** * (Re)starts the session. * * @return bool TRUE if the session has been initialized, else FALSE. **/ private function startSession() { if ( $this->sessionState == self::SESSION_NOT_STARTED ) { $this->sessionState = session_start(); } return $this->sessionState; } /** * Stores datas in the session. * Example: $instance->foo = 'bar'; * * @param name Name of the datas. * @param value Your datas. * @return void **/ public function __set( $name , $value ) { $_SESSION[$name] = $value; } /** * Gets datas from the session. * Example: echo $instance->foo; * * @param name Name of the datas to get. * @return mixed Datas stored in session. **/ public function __get( string $name ) { if ( isset($_SESSION[$name])) { return $_SESSION[$name]; } } public function __isset( $name ) { return isset($_SESSION[$name]); } public function __unset( $name ) { unset( $_SESSION[$name] ); } /** * Destroys the current session. * * @return bool TRUE is session has been deleted, else FALSE. **/ public function destroy() { if ( $this->sessionState == self::SESSION_STARTED ) { $this->sessionState = !session_destroy(); session_unset(); // Clear all session variables return !$this->sessionState; } return FALSE; } }