Я пишу 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, и при этом я не хочу, чтобы объект книги «знал» о пользовательский объект (для повторного использования), и я не хочу беспокоиться о необходимости запоминать сохранение пользовательского объекта всякий раз, когда какая-либо информация в нем изменяется.
Может кто-то увидеть что-то не так с этой стратегией?
Спасибо