0

$_SESSIONすべてのphpファイルで最初に変数を使用すると、関数session_start()が自動的に呼び出されるという解決策が必要です。そうでなければそうではありません。

呼び出しauto-prepend-fileたり使用したりすることはできますsession.auto_startが、ファイルでセッションを使用しない場合は、オーバーヘッドプロセスを防止します。

4

3 に答える 3

1

簡単な答え: できません。

ただし、セッション機能をクラス内にラップし、セッション クラス内でセッションの開始を処理できます。

class Session {

    public function __construct() {
        session_start();
    }

    public function set($k, $v) {
        $_SESSION[$k] = $v;
    }

    ...

}

使用法は次のようになります。

$session = new Session();
$session->set('key', 'value');

それ以外の場合は、次のような静的クラスを作成するためにsession_start()or行を節約する別の醜い解決策があります。$session = new Session();

class Session {

    private static $inited = false;

    public static function check() {
        if (!$inited) {
            session_start();
            $inited = true;
        }
    }

    public static function set($k, $v) {
        self::check();
        $_SESSION[$k] = $v;
    }

    ...

}

次に、最初に を呼び出すすべてのメソッドを作成するだけself::check()で、まだ初期化されていない場合はセッションが開始されます。使い方は簡単です:

Session::set('key', 'value');
于 2013-02-23T11:06:54.360 に答える
1

Session クラスを作成し、シングルトン パターンを使用してインスタンス化します。

class Session {
  private function __construct() {
    session_start();
  }

  private static $instance = false;
  public static function getInstance() {
    if(self::$instance == false) {
      self::$instance == new Session();
    }
    return self::$instance;
  }
}
于 2013-02-23T11:07:23.137 に答える
0

セッションを自動的に開始する場合は、php.ini ファイルで次の行を見つけて、値を 0 から 1 に変更し、サーバーを再起動する必要があります。

セッション。auto_start = 1

またはhtaccessで

php_value session.auto_start 1

これはすべての自動開始ですが、オーバーヘッドが発生するわけではありません

于 2013-02-24T17:19:57.020 に答える