セッションをデータベースに保存するカスタム セッション ハンドラ クラスがあります。データを書き込む場合、新しいセッションを作成しているか、既存のセッションを更新しているかに基づいて、書き込みを少し異なる方法で処理するカスタム ロジックがあります。これを追跡するため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) {
、書き込み機能のチェックの行です。