$_SESSION
すべてのphpファイルで最初に変数を使用すると、関数session_start()
が自動的に呼び出されるという解決策が必要です。そうでなければそうではありません。
呼び出しauto-prepend-file
たり使用したりすることはできますsession.auto_start
が、ファイルでセッションを使用しない場合は、オーバーヘッドプロセスを防止します。
簡単な答え: できません。
ただし、セッション機能をクラス内にラップし、セッション クラス内でセッションの開始を処理できます。
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');
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;
}
}
セッションを自動的に開始する場合は、php.ini ファイルで次の行を見つけて、値を 0 から 1 に変更し、サーバーを再起動する必要があります。
セッション。auto_start = 1
またはhtaccessで
php_value session.auto_start 1
これはすべての自動開始ですが、オーバーヘッドが発生するわけではありません