Почему бы вам не создать класс-оболочку сеанса, который обрабатывает доступ и хранение данных? Это приведет к гораздо более чистому коду и абстракции, поэтому внесение изменений в методы хранения в будущем будет довольно простым.
Вот пример оболочки:
abstract class Session
{
private static $_started = false;
private static $_driver;
public static function start($driver = "native", $site = "default")
{
if(self::$_started === false)
{
require_once "drivers/" . $driver . ".php";
self::$_driver = new $driver($_site);
}
}
public static function set($key,$value)
{
self::$_driver->set($key,$value);
}
public static function get($key)
{
self::$_driver->get($key);
}
public static function remove($key)
{
self::$_driver->remove($key);
}
}
Вышесказанное очень просто, но вы должны понять, что вам также необходимо создать собственный файл драйвера, содержащий набор необходимых методов, и они должны соответствующим образом хранить данные сеанса.
Пример использования класса Session примерно так:
Session::start("native");
/*
* Generic Code
*/
Session::set("key","value (:");
При извлечении вашего "Пользовательского" объекта вы можете просто сделать так:
Session::get("userObj")->id;
Производит намного чище код и больше проблем.
По прошествии времени вы можете просто создать новый драйвер для хранения в базе данных, а затем просто сменить драйвер с собственного на базу данных.
Примечание: хранение объектов в базе данных может быть немного ошибочным, особенно если ваш код не организован как загрузка сеанса до того, как пользовательский класс находится в области видимости, тогда вы можете получить частичные объекты в сеансе, что приведет к отсутствию функциональности.