0

セッションをデータベースに保存するカスタム セッション ハンドラ クラスがあります。データを書き込む場合、新しいセッションを作成しているか、既存のセッションを更新しているかに基づいて、書き込みを少し異なる方法で処理するカスタム ロジックがあります。これを追跡するためexistingSessionに、セッションが最初に読み取られるときにクラス プロパティが設定されます。

コード (簡潔にするために省略) は次のとおりです。

class My_Session_SaveHandler implements Zend_Session_SaveHandler_Interface
{
    protected $existingSession;

    public function read($id)
    {
        if ($id) {
            $this->existingSession = (load existing data from db)
        }

        return '';
    }

    public function write($id, $data)
    {
        if ($this->existingSession) { 
            [update session]
        } else {
            [create session]
        }

        return true;
    }
}

これはすべてうまくいくようです。ただし、ログに次のようなエラーが表示されることがあります。

PHP 通知: 未定義のプロパティ: My_Session_SaveHandler::$existingSession の /path/to/My/Session/SaveHandler.php 行 xxx、

は宣言されたプロパティであるため$existingSession、書き込みメソッドが静的に呼び出されている場合にのみ、これが発生すると考えられます。代わりに変数を静的プロパティに変更することもできますが、クラスが機能しているように見えるので、セッション ハンドラー クラスのメソッドが常に静的に呼び出されるのか、それとも時々発生するのか (もしそうならその理由) を理解したいと思います。

編集: 通知の行番号はif ($this->existingSession) {、書き込み機能のチェックの行です。

4

0 に答える 0