ecmall框架系統分析(三)

技術小甜發表於2017-11-08

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

Php程式碼 

  1. function BaseVisitor()

  2. {

  3. if ($_SESSION[$this->_info_key][‘user_id’])

  4. {

  5. $this->info         = $_SESSION[$this->_info_key];

  6. $this->has_login    = true;

  7. }

  8. else

  9. {

  10. $this->info         = array(

  11. ‘user_id’ => 0,

  12. ‘user_name’ => Lang::get(‘guest’)

  13. );

  14. $this->has_login    = false;

  15. }

  16. }

它在構造器中就對$_SESSION中進行_info_key的判斷,判斷是否存在,存在則使用者已經登入,不存在,則使用者還沒有登入

而這 裡的_info_key,則是在它的子類:UserVisitor extends BaseVisitor中進行附值的:

Php程式碼 

  1. class UserVisitor extends BaseVisitor

  2. {

  3. var $_info_key = ‘user_info`;

  4. }

這個子類,在FrontendApp extends ECBaseApp類中的:

Php程式碼 

  1. function _init_visitor()

  2. {

  3. $this->visitor =& env(‘visitor’, new UserVisitor());

  4. }

中對visitor進行初使化的。因此這就可以讓我們在FrontendApp的子類中使 用$this->visitor->get(“user_id”)就可以獲取當前登入使用者的資訊,而根據ecmall的繼承圖中我們可以知 道,基本在所有的實體物件操作類中都可以使用它對當前登入使用者進行訪問!而在BaseVisitor類中,集合了更多的函式可以對使用者是否登入,獲取當前 使用者資訊等內容進行操作。
而對於系統後臺的使用者操作,與前臺是一樣的,只不過後臺是:admin/app/backend.base.php中 的BackendApp類。



















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





相關文章