0

私は持っています:

class WebUser extends CWebUser {
  private $_balance;
  public function getBalance()          { return $this->_balance; }
}

問題は、このgetBalance値は、ページが更新されるたびに更新される必要があるということです。ただし、現在、これはユーザーが初めてログインしたときにのみ実行されます。ユーザーが禁止され、ユーザーがすでにログインしている場合も、同じ問題が発生します。

これを回避するにはどうすればよいですか?つまり、ユーザーがページをリロードするたびに、保存されているユーザーの状態を強制的に更新するにはどうすればよいですか?

実際のユーザーを設定するコードは次のとおりです。

パブリック関数authenticate(){

$api = new api();
$user = $api->getAccountDetailsByCellNr($this->username);

if (empty($user)) {
  $this->errorCode = self::ERROR_USERNAME_INVALID;
}
else {

  if(!isset($this->username))
    $this->errorCode = self::ERROR_USERNAME_INVALID;
  else if($user->password !== md5($this->password) )
    $this->errorCode = self::ERROR_PASSWORD_INVALID;
  else {
    $this->errorCode = self::ERROR_NONE;

    $this->setState('balance', $user->balance);

  }

}
4

1 に答える 1

1

init()WebUserクラスの関数を上書きします。何かのようなもの:

class WebUser extends CWebUser {
  ...
  public function init()
  {
    parent::init();
    $user = $api->getAccountDetailsByCellNr($this->username);
    $this->_balance = $user->balance;
  }
}
于 2012-12-02T16:00:14.720 に答える