天天看點

ecmall 架構系統分析(三)

在app.base.php中定義了一個BaseVisitor extends Object 類,它對session中的目前登入的使用者資訊進行判斷與初使化,我們先看看它的構造器:

Php代碼 

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類。

本文轉自ljianbing51CTO部落格,原文連結: http://blog.51cto.com/ljianbing/1611252,如需轉載請自行聯系原作者