param['addType'] = 'first'; return $this; } /** * Inserts at the lasting of the data. * * @return this */ public function last() { $this->param['addType'] = 'last'; return $this; } /** * Session start * * @param void * * @return void */ public static function start() { if( ! isset($_SESSION) ) { session_start(); } } /** * Encode session key & value * * @param string $nameAlgo = NULL * @param string $valueAlgo = NULL * * @return $this */ public function encode(?string $nameAlgo = NULL, ?string $valueAlgo = NULL) { $this->encode['name'] = $nameAlgo; $this->encode['value'] = $valueAlgo; return $this; } /** * Decode only session key * * @param string $nameAlgo * * @return $this */ public function decode(string $nameAlgo) { $this->encode['name'] = $nameAlgo; return $this; } /** * Regenerate status * * @param bool $regenerate = true * * @return $this */ public function regenerate(bool $regenerate = true) { $this->regenerate = $regenerate; return $this; } /** * Protected regenerate session id */ protected function regenerateSessionId() { if( $this->regenerate === true ) { session_regenerate_id(); } } /** * Protected add type */ protected function addType(&$type, $name, $value) { if( $addType = ($this->param['addType'] ?? NULL) ) { $type[$name] = Arrays\AddElement::$addType((array) $type[$name], $value); $this->param['addType'] = NULL; } else { $type[$name] = $value; } } /** * Protected encode name value */ protected function encodeNameValue(&$name, &$value = NULL) { if( ! empty($this->encode) ) { $this->encodeDataByType($name, 'name'); if( $value !== NULL ) { $this->encodeDataByType($value, 'value'); } } if( ! isset($this->encode['name']) ) { $this->defaultEncodeData($name); } $this->encode = []; } /** * Protected default encode data */ protected function defaultEncodeData(&$name) { if( ($encode = $this->config['encode']) === true ) { $name = md5($name); // @codeCoverageIgnore } elseif( is_string($encode) ) { $this->encodeDataIfValidHash($name, $encode); } } /** * Protected encode data by type */ protected function encodeDataByType(&$data, $type = 'value') { if( isset($this->encode[$type]) ) { $this->encodeDataIfValidHash($data, $this->encode[$type]); } } /** * Protected encode data if valid hash */ protected function encodeDataIfValidHash(&$data, $encode) { if( IS::hash($encode) ) { $data = Encode\Type::create($data, $encode); } } /** * protected default variable * * @param void * * @return void */ protected function defaultVariable() { $this->encode = []; $this->regenerate = true; } }