SessionHandler クラスはじめに
SessionHandler は特殊なクラスで、
これを継承したクラスを作れば PHP が内部的に使っているセッション保存ハンドラを拡張できます。
このクラスには七つのメソッドがあり、それぞれが七つのセッション保存ハンドラコールバック
( SessionHandler のインスタンスを session_set_save_handler でハンドラとして指定すると、 そのインスタンスが現在の保存ハンドラをラップします。 SessionHandler を継承したクラスを作ると、 親クラスのメソッド、つまり PHP の内部セッションハンドラのメソッドをラップして オーバーライドしたり処理を割り込ませたりフィルタをかけたりできるようになります。
これを利用すると、たとえば SessionHandler は現在の内部保存ハンドラのメソッドをラップしているので、 先述の暗号化の例は任意の保存ハンドラに適用することができます。その際に、ハンドラの内部的な動きを知っておく必要はありません。 このクラスを使うには、まず最初に公開したいハンドラを session.save_handler で設定してから、 SessionHandler あるいはそれを継承したクラスのインスタンスを session_set_save_handler に渡します。 このクラスのコールバックメソッドは PHP が内部的にコールするものであり、 ユーザーのコードから呼ばれることは想定していないことに注意しましょう。 コールバックの戻り値も、PHP が内部的に利用するだけです。 セッションの処理の流れについての詳しい情報は session_set_save_handler を参照ください。 クラス概要
SessionHandler
implements
SessionHandlerInterface
SessionIdInterface
/* メソッド */
public bool close()
public string create_sid()
public bool destroy(string
$id )public intfalse gc(int
$max_lifetime )public bool open(string
$path , string $name )public stringfalse read(string
$id )public bool write(string
$id , string $data )注意警告
このクラスは現在の PHP 内部セッション保存ハンドラを公開するように作られています。 自作の保存ハンドラを用意したい場合は、SessionHandler を継承するのではなく SessionHandlerInterface を実装したクラスを作るようにしましょう。 例例1 SessionHandler を使って PHP の保存ハンドラに暗号化機能を追加する例
|