Правильная стратегия для пользователя сеанса PHP в приложении Ajax - PullRequest
0 голосов
/ 22 марта 2011

Я пишу Ajax / PHP веб-приложение. Большинство вызовов ajax используют доступ к объекту пользователя, который хранится в сеансе.

<?php

session_start();

function session_user()
{
  static $session_user = null;

  if (!isset($session_user))
  {
    if (isset($_SESSION['user']))
      $session_user = unserialize($_SESSION['user']);
    else
      $session_user = new User();
  }
  return $session_user;
}


class User {
    public $books_borrowed = array();

    public function __construct() 
    {
    }

  function __destruct()
  {
    // store the user object in the session upon destruction
    session_start();
    $_SESSION[ 'user' ] = serialize( $this );  
  }         

    function authorise($user_id, $password)
    {
    // if the user_id and password match, load books_borrowed from the DB
    ...
    }

  function deauthorise()
  {
    session_destroy();
  }

}


?>

Ajax вызывает доступ к объекту пользователя следующим образом:

return session_user()->books_borrowed;

Обратите внимание, что объект пользователя сохраняется при уничтожении, что, насколько я могу судить, происходит непосредственно перед возвратом вызова ajax.

Причина, по которой я сохраняю объект пользователя в сеансе каждый раз, когда объект уничтожается, состоит в том, что он содержит другие объекты (книги), которые могут изменяться во время вызовов ajax, и при этом я не хочу, чтобы объект книги «знал» о пользовательский объект (для повторного использования), и я не хочу беспокоиться о необходимости запоминать сохранение пользовательского объекта всякий раз, когда какая-либо информация в нем изменяется.

Может кто-то увидеть что-то не так с этой стратегией?

Спасибо

1 Ответ

0 голосов
/ 22 марта 2011

Основная стратегия при создании дизайна для совершенно нового приложения с помощью ajax - , чтобы не думать о ajax как о чем-то особенном.Это обычный запрос, выполняемый браузером.Абсолютно то же самое, что и при открытии новой страницы, введя url вручную и нажав ввод.

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