SessionHandlerInterface::destroy
Destroy a session
PHP 5.4.0 及以上版本。
destroy() 方法是 SessionHandlerInterface 接口的一部分。它用于销毁指定的会话数据,通常在调用 session_destroy() 函数时被触发。此方法的实现需要开发者在自定义的会话处理类中定义,用于删除会话存储中的数据。
public function destroy(string $session_id): bool;
该方法返回一个布尔值。如果销毁会话成功,返回 true;如果失败,返回 false。
以下是一个自定义 SessionHandler 类实现 SessionHandlerInterface 接口的示例:
class MySessionHandler implements SessionHandlerInterface
{
public function open($save_path, $session_name)
{
// 打开会话存储
return true;
}
public function close()
{
// 关闭会话存储
return true;
}
public function read($session_id)
{
// 读取会话数据
return '';
}
public function write($session_id, $data)
{
// 写入会话数据
return true;
}
public function destroy($session_id)
{
// 销毁会话数据
// 假设这里我们在数据库中删除会话数据
$sql = "DELETE FROM sessions WHERE session_id = :session_id";
$stmt = $pdo->prepare($sql);
$stmt->execute([':session_id' => $session_id]);
// 返回是否成功
return $stmt->rowCount() > 0;
}
public function gc($maxlifetime)
{
// 进行垃圾回收操作
return true;
}
}
// 设置自定义会话处理器
$handler = new MySessionHandler();
session_set_save_handler($handler, true);
// 启动会话
session_start();
// 销毁会话
session_destroy();
在这个示例中,我们创建了一个 MySessionHandler 类,它实现了 SessionHandlerInterface 接口。在 destroy() 方法中,我们模拟了会话数据的销毁过程,例如通过 SQL 删除数据库中的会话记录。调用 session_destroy() 会自动触发 destroy() 方法。