Zend Framework Собственный класс диспетчера сеансов - PullRequest
1 голос
/ 05 марта 2012

Я создал свой собственный класс Session Manager. Я переопределил только один метод - метод destroy ($ id).Я написал там это:

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

the logoutUser ();Метод удаляет зарегистрированного пользователя из таблицы logged_users, потому что каждый раз, когда пользователь входит в систему, я записываю его идентификатор сессии и идентификатор пользователя в таблицу logged_users.Но, очевидно, метод не вызывается, потому что каждый раз, когда я проверяю таблицу, пользователь не вышел из системы.В чем может быть проблема?

1 Ответ

0 голосов
/ 05 марта 2012

Ваш фрагмент кода, кажется, в порядке, поэтому я предполагаю, что проблема возникает где-то позже, вероятно, в Model_User::logoutUser() или при попытке INSERT/UPDATE/DELETE в вашей logged_users -таблице.Попробуйте echo и die($variable) в своих блоках кода, чтобы увидеть, выполняются ли они и установлены ли эти переменные в соответствии с ожиданиями (например, проверьте в вашем Model_User, вызван ли logoutUser () и действительно ли передано $ id).Еще лучше, не торопитесь и изучите базовое юнит-тестирование.;)

Примечание: в вашем коде, похоже, есть некоторое дублирование, так как ваш Model_User не должен выполнять такие действия, как logout ().Посмотрите на Zend_Session_SaveHandler_DbTable , если вы хотите иметь состояния сеансов в таблице.Наличие какого-либо обработчика сеанса И пользовательской модели поддерживает logged_users -таблицу кажется ненужным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...