セッションは、WEBアプリケーションで状態を保存するために使用され、PHPにも標準で実装されています。
SyLフレームワークでは、PHPのセッション機能をオブジェクトとしてラップし、統一的なインターフェイスを実装することにより、
機能の整理、処理の局所化や修正の柔軟さ、高レベル処理の実装などを目標としています。
※セッション関連で使用されるdefines.xmlで設定される定数は、「3.11 defines.xmlで定義されている定数」のセッション関連を参照してください。
セッションは、リクエストオブジェクトのsetSession、getSession、getSessionObjectメソッドを実行することにより自動的に開始されます。
(明示的にセッションを終了したいときは、セッションオブジェクトのcloseSessionメソッドを実行してください)
セッションに値をセットしたり、取得する簡易インターフェイスの使用例です。
// コンテキストからリクエストオブジェクトを取得 $request =& $context->getRequest(); // セッションに値をセットする $request->setSession('sample', '6.1'); // セッションから値を取得する $sample = $request->getSession('sample'); echo $sample; // 6.1
これ以外の操作は、セッションオブジェクトから行います。
// コンテキストからリクエストオブジェクトを取得 $request =& $context->getRequest(); // セッションオブジェクトを取得する $session =& $request->getSessionObject(); // セッションに値をセットする(上の処理と同様) $session->set('sample', '6.1'); // セッションから値を取得する(上の処理と同様) $sample = $session->get('sample'); // セッションに配列から複数値を一括してセットする $values = array( 'sample1' => '1.1', 'sample2' => '1.2', 'sample3' => '1.3' ); $session->sets($values); // セッションから全パラメータを取得する $all_session_data = $session->gets(); // セッションから値を削除する $session->delete('sample'); // セッションから全パラメータを削除する $session->deletes(); // セッションを終了する $session->closeSession(); // セッションIDを取得する $session_id = $session->getSessionId(); // セッションIDの名前は、SYL_SESSION_NAME定数から取得できます。 $session_name = SYL_SESSION_NAME;
セッションを保存するストレージとしては、標準のセッションファイルの形式の他に DBとMemcacheが使用できます。
セッションストレージとしてDBを使用する場合、
まず定数設定ファイル「defines.xml」の SYL_SESSION_TYPE の値を「db」に設定し、
SYL_SESSION_SAVE_PATH の値に使用するDBの接続文字列を設定します。
※後述のDB設定値 SYL_DB_DSN を使用している場合で、SYL_SESSION_SAVE_PATH を設定していない場合、SYL_DB_DSN が使用されます。
次にセッションの保存に使用するテーブル名とカラムを SYL_SESSION_DB_TABLE に設定します。
… <!-- セッションストレージにDBを使用する設定例 --> <define name="SYL_SESSION_TYPE">db</define> <define name="SYL_SESSION_SAVE_PATH">pgsql:dbname=syldb;host=localhost;
port=5432;user=syluser;passwd=sylpass;client_encode=EUC-JP;persistent=0
</define> <define name="SYL_SESSION_DB_TABLE">session_table:session_id:session_data:
session_expires</define> …
また、セッションストレージとしてMemcacheを使用する場合、
まず、Memcacheエクステンションをインストールして、Memcache関連の関数を使用できるようにします。
※phpinfo()にて、Memcacheエクステンションが有効か調べることができます。
※Memcacheエクステンションのバージョンは [PECL memcache >= 2.1.1] です。
次に定数設定ファイル「defines.xml」の SYL_SESSION_TYPE の値を「memcache」に設定し、
SYL_SESSION_SAVE_PATH の値に使用するホスト名とポート番号を設定します。
… <!-- セッションストレージにMemcahceを使用する設定例 --> <define name="SYL_SESSION_TYPE">memcahe</define> <define name="SYL_SESSION_SAVE_PATH">tcp://localhost:11211</define> …