/** * Returns instance of session object. If session id is not defined, * the {@link find} method will be called. * * Use it to get current session. * * @return SessionBase */ public static function getInstance() { //always initialized first by the Boot.php if (is_null(self::$instance)) { throw new SessionException("Session subsystem wasn't initialized in proper way. Check session.enabled config variable."); } if (self::$instance->getId() === null) { self::$instance->find(); } //may return null in case if session_enbaled is false return self::$instance; }
/** * Bootstrap Running Component * * @param integer $rc, Running Component, * optional value: RC_NONE,RC_DATABASE,RC_MEMCACHE,RC_SESSION,RC_ALL * or: RC_DATABASE | RC_MEMCACHE | RC_SESSION * or: RC_ALL ^ RC_MEMCACHE ^ RC_SESSION * or: RC_ALL & ~RC_MEMCACHE & ~RC_SESSION * @return SimPHP */ public function boot($rc = RC_NONE) { if ($rc > 0) { //$rc_set = [RC_NONE,RC_DATABASE,RC_MEMCACHE,RC_SESSION,RC_ALL]; if ((RC_DATABASE & $rc) === RC_DATABASE) { //Bootstrap with db D(); } if ((RC_MEMCACHE & $rc) === RC_MEMCACHE) { //Bootstrap with memcache M(); } if ((RC_SESSION & $rc) === RC_SESSION) { //Bootstrap with session $GLOBALS['user'] = new stdClass(); SessionBase::anonymous_user($GLOBALS['user']); $sessnode = $this->sessnode; $sess_handler = Config::get("storage.session.{$sessnode}.handler", 'file'); if ('mm' == $sess_handler) { self::$session = new SessionMM($sessnode); } elseif ('db' == $sess_handler) { self::$session = new SessionDB($sessnode); } else { // default to file session session_start(); } } } return $this; }