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」クラスになりました。
セッションクラスの内包する物はこんなかんじになってます。
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; }
変わったと書いたが...
さほど変わりなかった/(^o^)\
- 作者: Alexander Thomas
- 出版社/メーカー: O'Reilly Vlg. Gmbh & Co.
- 発売日: 2013/05
- メディア: ハードカバー
- クリック: 2回
- この商品を含むブログを見る
- 作者: N Belhomme
- 発売日: 2012/05/31
- メディア: ペーパーバック
- クリック: 7回
- この商品を含むブログを見る