【CakePHP3/session】CakePHP3系でのsessionへのアクセスと使用方法
今回は、CakePHP3系でsessionへのアクセス方法を記していきます。
1.sessionへのアクセス方法
CakePHP3のバージョンによって、sessionへのアクセス方法が違うので、確認をしていきましょう。
3.6以降であれば両方使えますが、新しい方を使うの方が良いかと思います。
testController.php <?php // CakePHP 〜 3.5系 $session1 = $this->request->session(); / CakePHP 3.6系 〜 $session2 = $this->getRequest->getSession(); ?>
2.sessionへの書き込み
sessionへ値を保管したい場合は、「write」を下記の様に使用します。
testController.php <?php $session->write('Config.language', 'en'); $session->write('Config', 'en'); $session->write('{アクセス用のキー}', '{値}'); ?>
配列を使用すれば、1回で複数sessionに書き込みをすることもできます。
testController.php <?php $session->write([ 'Config.language' => 'en', 'Config', 'en' ]); $session->write(['{キー1}' => {値1}, {キー2} => {値2}]); ?>
3.sessionの読み込み
sessionの値を読み込みたい場合は、「read」を下記の様に使用します。
今回は上記で書き込んだ内容を取得します。
testController.php <?php // en を取得 $session->read('Config.language'); $session->read('{アクセス用のキー}'); ?>
4.sessionの削除
sessionの削除には2パターンあります。
「delete」と「consume」です。
testController.php <?php // 値を削除 $session->delete('Config.language'); // 値を取得後、削除 (read + deleteの様なイメージ) $language = $session->consume('Config.language'); ?>
この2つには下記違いがあるので、使い分けをしましょう。
delete:セッションの値を削除する (値は取得しない)
consume:セッションの値を取得後、削除する
5.sessionデータの存在確認
sessionにデータが入っているか確認する場合は、「check」を使用します。
testController.php <?php // キーに値が入っていれば true $session->check('Config.language') // if文での判定などに使いましょう。 if ($session->check('Config.language')) { // Config.languageに値が入っていれば実行される } ?>
以上の5つがセッションでよく使う内容になります。
入力フォームの維持や、ログイン等でセッションは良く使われるので、
用途にあったセッションを使用していきましょう!