在ecpp.base.php中定义了一个BaseVisitor extends Object 类,它对session中的当前登录的用户信息进行判断与初使化,我们先看看它的构造器:
function BaseVisitor() { if ($_SESSION[$this->_info_key]['user_id']) { $this->info = $_SESSION[$this->_info_key]; $this->has_login = true; } else { $this->info = array( 'user_id' => 0, 'user_name' => Lang::get('guest') ); $this->has_login = false; } }
它在构造器中就对$_SESSION中进行_info_key的判断,判断是否存在,存在则用户已经登录,不存在,则用户还没有登录
而这里的_info_key,则是在它的子类:UserVisitor extends BaseVisitor中进行附值的:
class UserVisitor extends BaseVisitor { var $_info_key = 'user_info'; }
这个子类,在FrontendApp extends ECBaseApp类中的:
function _init_visitor() { $this->visitor =& env('visitor', new UserVisitor()); }
中对visitor进行初使化的。因此这就可以让我们在FrontendApp的子类中使用$this->visitor->get("user_id")就可以获取当前登录用户的信息,而根据ecmall的继承图中我们可以知道,基本在所有的实体对象操作类中都可以使用它对当前登录用户进行访问!而在BaseVisitor类中,集合了更多的函数可以对用户是否登录,获取当前用户信息等内容进行操作。
而对于系统后台的用户操作,与前台是一样的,只不过后台是:admin/app/backend.base.php中的BackendApp类