セーブとロード(セッション)

アプリケーションでは、一連の処理においてプログラム内で一時的に記憶して利用する変数(ショッピングカートの中身など)が必要なこともあります。コントローラ、フォーム、モデル、ユーザ定義関数(、設定ファイル)の中では、そういった任意の変数と値の組をセッション情報としてセットして取り出すことができます。従来の開発でセッション変数を利用する際はセッション変数名の重複を考慮する必要がありましたが、Chimpanzeeではそういったことを意識しなくても以下のメソッドで利用できます。

save(string $var_name, mixed $value)
(セッション情報として)変数$var_nameに値$valueを代入して保存します。値はスカラでも配列でもどんな型も可能です(mixed)。
load(string $var_name, mixed $defalt_value = NULL)
指定したsave()済み変数の値を取得します。戻り値はsave()した$valueの型に依存します。何もsave()されていない場合$defalt_valueを返します。
free(string $var_name)
指定したsave()済み変数を破棄します。
freeAll()
実行元のインスタンスにsave()されている変数をすべて破棄します。

これらを使用して以下のようにコーディングしていきます。

<?
class ctrlXxx extends CZCtrl {

	public function actionIndex($user_id = NULL) {
		// 引数として受け取ったユーザIDをセッション情報に格納
		$this->save('user_id', $user_id);
		// フォームの表示
		$this->newForm('account')->initValues();
	}
		:

	public function actionCommit($user_id = NULL) {
		// ユーザIDをセッション情報から取ってくる
		$add_values = array( 'user_id' => $this->load('user_id') );
		// フォームの入力データを取得
		$form_values = $this->newForm('account')->loadValues();
		// 取ってきたユーザIDを付加してデータベースに保存
		$this->newModel('account')->CommitInsert($form_values, $add_values);
		// 用済みのユーザIDを削除
		$this->freeAll();
	}

}
?>

では、アクションIndexで受け取ったIDをセッション変数にセットし、その後のアクションCommitで取得して破棄しています。

これらのメソッドは同一セッションの同一インスタンス内でのみ有効です。インスタンスが変わる場合すなわち現在のコントローラから異なるコントローラに移った場合、遷移先のコントローラでは参照できません。しかしまた元のコントローラに戻ってきたときには参照できます。インスタンスをまたいで(グローバルに)セッション変数を利用する場合はモジュールSesを利用します。

前後のページ

ページトップへ