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() 方法。