我有一个自定义会话处理程序类,用于在数据库中存储会话。在写入数据时,有一些自定义逻辑根据是创建新会话还是更新现有会话来稍微处理写入。要跟踪此情况,首次读取会话时会设置类属性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注意:未定义的属性:第xxx行的/path/to/My/Session/SaveHandler.php中的My_Session_SaveHandler :: $ existingSession,
由于$existingSession
是一个声明的属性,我唯一能想到的就是静态调用write方法。我可以将变量修改为静态属性,但由于该类似乎可以工作,我想了解会话处理程序类方法是否总是被静态调用,或者它是否有时发生(如果是这样的话)。< / p>
编辑:通知中的行号是写入功能中if ($this->existingSession) {
检查的行。