Хотя это может сработать, я не думаю, что это разумное поведение.Принцип наименьшего удивления, на мой взгляд, применим как к программированию, так и к дизайну пользовательского интерфейса.Если вы перезапишете поведение по умолчанию $_SESSION
в своем скрипте, это может привести в замешательство какого-то будущего программиста, который должен иметь дело с вашим кодом.
Я думаю, что это взлом - и неприятный- злоупотреблять таким образом надглобальной природой $_SESSION
.
Лучше, на мой взгляд, написать класс со статическими методами для получения и установки ваших данных:
class Session {
public function get($key, $defaultValue = null) {
// do some code to get the value for $key, and return $defaultValue if there is none
}
public function set($key, $value) {
// do some code to set $key
}
}
Затем вы можете получить к нему доступ с помощью Session::get('someKey')
или Session::get('someKey', 'default')
и Session::set('someKey', 'someValue')
.
Поскольку классы по своей природе глобальны, вы можете получить к ним доступ из любого места в вашем коде.Это менее удивительно и приведет к меньшему замешательству в будущем.
Если вы по каким-то причинам хотели использовать методы объекта, возможно, было бы лучше реализовать шаблон Singleton.