2012-03-05 2 views
1

내 자신의 세션 관리자 클래스를 만들었습니다. destroy ($ id) 메서드 인 하나의 메서드 만 오버로드했습니다. 내가 거기에 쓴 :젠드 프레임 워크 자신의 세션 관리자 클래스

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

logoutUser(); 메소드는 logged_users 테이블에서 로그인 한 사용자를 삭제합니다. 사용자가 로그인 할 때마다 세션 ID와 사용자 ID를 logged_users 테이블에 기록하기 때문입니다. 하지만 분명히 메서드는 사용자가 로그 아웃되지 않은 테이블을 확인할 때마다 호출되지 않습니다. 무엇이 문제 일 수 있습니까?

+0

어떻게 앱에 맞춤 SessionManager 클래스를 사용한다고 말하고 있습니까? –

답변

0

귀하의 코드는 괜찮을 것 같다, 그래서 당신의 logged_users - 테이블에 INSERT/UPDATE/DELETE하려고 할 때 나는 아마 Model_User::logoutUser()에 문제가 어딘가 이상 발생 추측이나하고있다. 코드 블록에 echodie($variable)을 실행하여 코드 블록이 실행되고 변수가 예상대로 설정되었는지 확인하십시오 (예 : logoutUser()가 호출되고 $ id가 실제로 전달 된 경우 Model_User를 체크인). 더 좋은 점은 시간을 들여 기본 단위 테스트를 배우는 것입니다. ;)

사이드 노트 : Model_User가 logout()과 같은 작업을 수행해서는 안되기 때문에 코드에 중복이있는 것 같습니다. 테이블에 세션 상태를 갖고 싶다면 Zend_Session_SaveHandler_DbTable을보십시오. 어떤 종류의 세션 핸들러를 가지고 있고 user_model이 logged_users 테이블을 유지 관리하는 것은 불필요한 것처럼 보입니다.