Nullyのぶろぐ

仙台から東京へ転勤したエンジニアのブログ

ZF2のセッションクラスについて

あ、昨日はてなブログにブログ作ったNullydesu!!!
オナシャス!!!!

で、ZF2からセッションクラスがちょこっとだけ変わったので、簡単にですが、実際に使ったことを元にどうなってるかというのを書いてみたいと思います。
ちなみにZF2のバージョンは「2.0 Beta4」です。

Namespaceについて

ZF1だとZend_Session_Namespaceというクラスがあり、$_SESSION変数に指定した名前空間を作り、そこにあれこれそれを色々追加できます。

実際にどういうことかというと、「admin」、「manage」、「staff」という名前空間を作るとすると、

<?php
$adminSession = new Zend_Session_Namespace("admin");
$manageSession = new Zend_Session_Namespace("manage");
$staffSession = new Zend_Session_Namespace("staff");

という風に、指定してインスタンスを作ることで、

<?php
$adminSessoin$_SESSION["admin"]
$manageSession$_SESSION["manage"]
$staffSession$_SESSION["staff"]

という形で保存できる領域が明示的に分けることができます。
(あまりこういう使いかたはしないと思いますが。)

これが今までのセッションクラスのざっくばらんな処理内容。

じゃぁZF2からどうなったか?

ZF2からは、Zend_Session_Namespaceというクラスはなくなり、代わりに「Zend\Session\Container」クラスになりました。
セッションクラスの内包する物はこんなかんじになってます。

f:id:nully:20120713181013j:plain
Sessionディレクトリ以下にある他のディレクトリは名前を見てもらえればなんとなく分かるかなーと。
SaveHandlerとStorageは以前も似たようなものがあったので割愛します。

Configurationについて

ファイルは3つありますが、実際使うのは1つっぽいです。
Zend\Session\SessionConfigurationクラスはセッションの設定を制御してくれるクラスで、setOption関数やserializeHandlerを設定する関数などがあります。

Validatorについて

このクラスは使いドコロが限定されますが、セッションが動いている最中のリモートアドレスとユーザーエージェントをチェックしてくれるクラスっぽいです。
例えば、アクセスしてきた元アドレスとセッションに保存されているアドレスが異なっていたら画面を真っ白にしてあげるとか?

前置きはこれまで

前置きが長くなりましたが、実際の使い方です。
使い方はいたって簡単で、Zend_Session_Namespaceクラスのように呼び出して上げるだけです。

<?php
$session = new Zend\Session\Container("hogehoge");

「hogehoge」の部分は名前空間になります。

データを書き込む・読み込むのも以前同様に「->」で保存する変数名を指定します。

<?php
$session->name = "nully";
// echo $session->namel /* nully と表示される */

DIを利用した呼び出し方

今のフレームワークだと、DependencyInjectionという概念が徐々に取り入れられている感じがします。(ZF2からは少なくともこれが無いと始まらないくらいのレベルになっているっぽい)
ということでDIを利用したコードの呼び出しを。

<?php
"session_container" => function($sm) {
    $config = $sm->get("config");
    // セッションの設定などを行う
    $container = new \Zend\Session\Container("app_name");
    return $container;
}

こんなかんじでModule.phpだったり、module.config.phpに書き込んであげれば良いと思います。

変わったと書いたが...

さほど変わりなかった/(^o^)\

Zend Framework 2.0 Kochbuch

Zend Framework 2.0 Kochbuch

Zend Framework 2.0 Cookbook

Zend Framework 2.0 Cookbook