2011-07-23 8 views
2

は、私は$ _SESSION VAR

class A 
{ 
    static function doSomething() 
    { 
     $_SESSION['foo'] = 'bar'; 
    } 
} 

A::doSomething(); 

var_dump($_SESSION); 

で奇妙な機能を発見しました。誰が実際に何が起こるか説明できますか?

+0

をそれを使用するために、出力は何ですか?あなたは何を期待しましたか?どうしたの? –

答えて

0

$_SESSIONsuperglobal arrayです:デフォルトでは

、スーパーグローバルのすべてが利用可能です...

だから、常にこの配列にアクセスすることができます。これは、POSTリクエストがなかった場合でも機能しますが、$_POST['foo'] = 'bar'を実行できます。

session_start();を呼び出さなかったので、echo $_SESSION['foo'];がエラーをスローする、A :: doSomethingを呼び出さない、あなたの例の別のページに移動しようとすると、エラーがスローされます。

+0

$ _SESSIONはデフォルトでは未定義です。私はこのコードでsession_startを呼び出さなかった!それは完全なコードです。 – misha

+2

デフォルトでは '_SESSION'は未定義ですが、あなたはまだスーパーグローバルとして変数に書き込むことができます。リクエスト間でこれらの値を保持するのはPHPセッションモジュールです(つまり、 'session_start()') –

+0

今すぐ取得できます – misha

1

$ _SESSIONはスーパーグローバルなので、session_start()が呼び出されていなくてもアクセスできます。

また、あなたが

$_SESSION = array(); 

の$ _SESSION配列を初期化する必要はありません、他の配列と同じよう

$_SESSION['foo'] = 'bar'; 
関連する問題