Сессии и Statefulness - PullRequest
3 голосов
/ 15 июля 2011

Если PHP не имеет состояния, то даже если вы объявите переменные как статические, они не сохранят свои значения при разных запусках. Поэтому бессмысленно пытаться отслеживать ваши сеансы, используя класс, такой как приведенный ниже, поскольку сеансы поддерживают состояние при каждом запуске, а пользовательский код PHP - нет.

class session
  {
  protected static $ses_id ="";
  public static function start()
    {
    self::$ses_id = session_start();
    }
  public static function is_start()
    {
    return self::$ses_id;
    }
  public static function finish()
    {
    self::$ses_id = 0;
    $_SESSION=array();
    if (session_id() != "" || isset($_COOKIE[session_name()]))
      {
      setcookie(session_name(), '', time()-2592000, '/');
      }
    session_destroy();
    }
  }

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

Из документации :

session_start () создает сеанс или возобновляет текущий на основе идентификатор сеанса, переданный через запрос GET или POST, или переданный через cookie

Это означает, что вы можете возобновить сеанс, и $ses_id останется прежним, пока сеанс действителен, и если он не был уничтожен.

Заключение его в класс может быть хорошим способом инкапсуляции функциональности сеанса и доступа к нему ООП-способом. Вы также можете расширить класс, чтобы упростить сохранение соответствующих данных сеанса, которые затем становятся доступными во всем приложении, более разумным способом, чем с помощью предоставляемых функций session_ *.

2 голосов
/ 15 июля 2011

Ваш класс, как вы написали, не добавляет никаких новых функциональных возможностей, он просто оборачивает существующие функциональные возможности (предоставляемые функциями session_*). Подобные вещи могут быть полезны, если вам требуется посредничество или контроль доступа к сеансу. Только вы можете судить, стоит ли это в вашем собственном приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...