123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- <?php
- namespace yii\web;
- abstract class MultiFieldSession extends Session
- {
-
- public $readCallback;
-
- public $writeCallback;
-
- public function getUseCustomStorage()
- {
- return true;
- }
-
- protected function composeFields($id = null, $data = null)
- {
- $fields = $this->writeCallback ? call_user_func($this->writeCallback, $this) : [];
- if ($id !== null) {
- $fields['id'] = $id;
- }
- if ($data !== null) {
- $fields['data'] = $data;
- }
- return $fields;
- }
-
- protected function extractData($fields)
- {
- if ($this->readCallback !== null) {
- if (!isset($fields['data'])) {
- $fields['data'] = '';
- }
- $extraData = call_user_func($this->readCallback, $fields);
- if (!empty($extraData)) {
- session_decode($fields['data']);
- $_SESSION = array_merge((array) $_SESSION, (array) $extraData);
- return session_encode();
- }
- return $fields['data'];
- }
- return isset($fields['data']) ? $fields['data'] : '';
- }
- }
|