私は以下の問題があります:session_start()を実行すると、__wakeup()がオブジェクトで呼び出されるのはなぜですか?
私はシングルトンパターンのクラスを使用しています。私は__wakeup()をそのような理由で非公開にしました。そのオブジェクトはセッションに格納されません。私はにsession_start()を呼び出すと、私はこのエラーメッセージが表示されます。Session.phpの
Warning: Invalid callback MySingletonClass::__wakeup, cannot access private method MySingletonClass::__wakeup() in Session.php on line 32
ライン32は、読み取ります
30 public function startSession() {
31 if (session_status() == PHP_SESSION_NONE) {
32 session_start();
33 }
34 }
は、私がセッションに格納されているオブジェクトは、シリアル化され、シリアライズされていることを理解しますが、MySingletonClass実際には、$ _SESSION配列は空です。
私はおそらく、いつかそれを偶然にもセッションに保存してそこに座っていると思っていましたが、$ _SESSIONデータをすべてクリアしても、セッションを破棄し、サーバー上のセッションファイルを削除し、 ...
さらに奇妙なのは、私が正確に同じシングルトンパターンを使用し、private __wakeup()を持っているいくつかの異なるクラスを使用することです。そのちょうど1つ。
何が起こっていますか?私のコードは非常識なPHPが混乱しているのですか?
[編集] 私は何かを考え出し:
をこのエラーはMySingletonClass
が定義した後(そう、その定義を含むファイルは、/必要な含まれた後)session_start()
が呼び出された場合はどうなりますが、session_start()
がある場合はしません他のファイルがインクルード/必要とされる前に、スクリプト実行の最初に移動しました。
誰でも説明がありますか? session_start()
先に持つことは、私は推測する罰金ですが、私はとにかくそれを開始するだろうが、私はここで何が起こっているか知りたいのですが...