Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】SessionHandlerInterface::write()メソッドの使い方

writeメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

writeメソッドは、現在のセッションIDに関連付けられたセッションデータを、指定されたストレージに書き込み、永続化するメソッドです。このメソッドは、PHPの標準セッションハンドラではなく、開発者が独自のセッション管理機構を実装するためのSessionHandlerInterfaceインターフェースの一部として定義されます。

PHPのセッション処理において、セッションデータが変更され、その変更を永続的に保存する必要がある場合に、PHPエンジンによって内部的に呼び出されます。具体的には、スクリプトの実行終了時、またはsession_write_close()関数が明示的に呼び出された際に実行されます。

writeメソッドは二つの引数を取ります。一つ目は現在のセッションを一意に識別する文字列である$session_id、二つ目は保存すべきセッションデータを文字列として格納した$session_dataです。このメソッドの実装では、受け取った$session_idに対応する$session_dataを、データベースやファイルシステム、キャッシュシステムなど、開発者が指定した永続的なストレージに安全に保存する処理を記述します。

処理が正常に完了し、セッションデータがストレージに書き込まれた場合はtrueを、何らかの問題が発生して書き込みに失敗した場合はfalseを返します。この戻り値は、PHPエンジンがセッションの保存が成功したかどうかを判断するために使用されるため、正確な値を返すことが重要です。カスタムセッションハンドラを実装する上で、セッションデータの整合性と永続性を保証するために非常に重要な役割を担います。

構文(syntax)

1<?php
2
3class CustomSessionHandler implements SessionHandlerInterface
4{
5    public function write(string $session_id, string $session_data): bool
6    {
7        // ここにセッションデータ ($session_data) をセッションID ($session_id) に関連付けて永続化する処理を記述します。
8        // 成功した場合は true、失敗した場合は false を返します。
9        return true;
10    }
11
12    // 他の SessionHandlerInterface メソッドも実装する必要がありますが、
13    // ここでは write メソッドの構文例に焦点を当てています。
14    public function open(string $path, string $name): bool { return true; }
15    public function close(): bool { return true; }
16    public function read(string $session_id): string|false { return ''; }
17    public function destroy(string $session_id): bool { return true; }
18    public function gc(int $max_lifetime): int|false { return 0; }
19    public function create_sid(): string { return ''; }
20    public function validate_sid(string $session_id): bool { return true; }
21    public function update_timestamp(string $session_id, string $session_data): bool { return true; }
22}

引数(parameters)

string $id, string $data

  • string $id: セッションIDを指定する文字列
  • string $data: セッションに保存するデータを指定する文字列

戻り値(return)

bool

セッションデータの保存に成功した場合は true、失敗した場合は false を返します。

関連コンテンツ