Мне было интересно, как лучше всего хранить и извлекать значения сеанса в PHP. Я создаю php-фреймворк со структурой MVC. Теперь у меня есть класс реестра с важным объектом.
У меня есть класс для сеанса с некоторыми определенными функциями, относящимися к сеансу. Теперь мне было интересно, является ли хорошей практикой просто использовать
$_SESSION['something']
везде в вашем коде. Или я должен использовать методы set и get в классе объекта сеанса. Если я это сделаю, это будет выглядеть примерно так
$session->something = 4
$myalue = $session->something
Я знаю, что это не имеет большого значения, но мне просто интересно, что лучше всего подходит для такой вещи в хорошей архитектуре.
Благодарю вас!
Ответ 1 · рейтинг 4 · Tyler Carter
Я склоняюсь к классу объекта сеанса главным образом потому, что он дает мне прокси между фактической датой сеанса и тем, какие классы пытаются установить.
Например:
Когда у меня есть работающий сайт, и пользователь говорит, что у него проблемы с X или Y, мне очень легко вставить объект сеанса с данными, которые делают его похожим на меня, без необходимости входа в систему как этого пользователя или удалить любые мои собственные данные сеанса.
Другим преимуществом является то, что мне не нужно беспокоиться о том, как я называю свои переменные. Это особенно удобно, если мне нужно убедиться, что мое приложение не наступает на пятки другому приложению. Я могу просто изменить имена своих переменных в хранилище сеансов, сохраняя при этом одно и то же имя при работе с моим приложением.
Ответ 2 · рейтинг 1 · deceze♦
Если вы создаете класс-оболочку вокруг чего-то, вы должны использовать этот класс-оболочку. Иначе какой смысл?
То, что вы обычно хотите снимать, - это слой абстракции. Если вы когда-нибудь решите изменить детали реализации того, как именно хранятся данные сеанса (например, хранить данные в $_SESSION['Prefix']['something'] или переключить все это на серверную часть базы данных), вы можете сделать это, просто изменив детали класса сеанса, в то время как остальная часть вашего кода работает без изменений.