2012-03-05 72 views
1

我創建了我自己的會話管理器類我只覆蓋了一個方法,即destroy($ id)方法。我在那裏寫到:Zend Framework擁有會話管理器類

public function destroy($id) 
{ 
    $result = parent::destroy($id); 
    $model = new Model_User(); 
    $model->logoutUser($id); 
    return $result; 
} 

logoutUser();方法將登錄用戶從logged_users表中刪除,因爲每次用戶登錄時,我都會在logged_users表中寫入其會話標識和用戶標識。但顯然該方法沒有被調用,因爲每次我檢查表時用戶沒有註銷。可能是什麼問題呢?

+0

你如何告訴應用程序使用自定義的SessionManager類? – 2012-03-05 08:48:04

回答

0

您的代碼片段似乎沒問題,所以我猜測問題發生在某個地方,可能在Model_User::logoutUser()或嘗試在logged_users -table中嘗試INSERT/UPDATE/DELETE。在你的代碼塊中嘗試echodie($variable),看看它們是否被執行並且變量是按預期設置的(例如,如果調用logoutUser()並且實際傳遞$ id,那麼檢查你的Model_User)。更好的是,花點時間學習基本的單元測試。 ;)

附註:你的代碼似乎有一些重複,因爲你的Model_User不應該執行像logout()這樣的操作。看看Zend_Session_SaveHandler_DbTable,如果你想在表中有會話狀態。擁有某種會話處理器並且user_model保持logged_users -table似乎沒有必要。