Хорошая практика хранения и извлечения значений сеанса в PHP

Мне было интересно, как лучше всего хранить и извлекать значения сеанса в PHP. Я создаю php-фреймворк со структурой MVC. Теперь у меня есть класс реестра с важным объектом.

У меня есть класс для сеанса с некоторыми определенными функциями, относящимися к сеансу. Теперь мне было интересно, является ли хорошей практикой просто использовать

$_SESSION['something'] 

везде в вашем коде. Или я должен использовать методы set и get в классе объекта сеанса. Если я это сделаю, это будет выглядеть примерно так

$session->something = 4
$myalue = $session->something

Я знаю, что это не имеет большого значения, но мне просто интересно, что лучше всего подходит для такой вещи в хорошей архитектуре.

Благодарю вас!


person Saif Bechan    schedule 08.03.2010    source источник


Ответы (2)


Я склоняюсь к классу объекта сеанса главным образом потому, что он дает мне прокси между фактической датой сеанса и тем, какие классы пытаются установить.

Например:

Когда у меня есть работающий сайт, и пользователь говорит, что у него проблемы с X или Y, мне очень легко вставить объект сеанса с данными, которые делают его похожим на меня, без необходимости входа в систему как этого пользователя или удалить любые мои собственные данные сеанса.

Другим преимуществом является то, что мне не нужно беспокоиться о том, как я называю свои переменные. Это особенно удобно, если мне нужно убедиться, что мое приложение не наступает на пятки другому приложению. Я могу просто изменить имена своих переменных в хранилище сеансов, сохраняя при этом одно и то же имя при работе с моим приложением.

person Tyler Carter    schedule 08.03.2010

Если вы создаете класс-оболочку вокруг чего-то, вы должны использовать этот класс-оболочку. Иначе какой смысл?

То, что вы обычно хотите снимать, — это слой абстракции. Если вы когда-нибудь решите изменить детали реализации того, как именно хранятся данные сеанса (например, хранить данные в $_SESSION['Prefix']['something'] или переключить все это на серверную часть базы данных), вы можете сделать это, просто изменив детали класса сеанса, в то время как остальная часть вашего кода работает без изменений.

person deceze♦    schedule 08.03.2010