protected function get_set($key = null, $set_value = null, &$value) { $key = $this->prepare_key($key); if ($set_value === null) { // get return tf_stripslashes_deep_keys($key === null ? $value : tf_akg($key, $value)); } else { // set tf_aks($key, tf_addslashes_deep_keys($set_value), $value); } }
public function get($key, $default_value = null) { $this->start_session(); return tf_akg($key, $_SESSION, $default_value); }
/** * @param $keys * @param $keysDelimiter * @param $loadCallback * @return false|mixed */ public static function get($keys, $loadCallback = null, $keysDelimiter = '/') { $keys = (string) $keys; $keysArr = explode($keysDelimiter, $keys); $key = $keysArr; $key = array_shift($key); if ($key === '') { trigger_error('First key must not be empty', E_USER_ERROR); } $value = tf_akg($keys, self::$cache, null, $keysDelimiter); self::freeMemory(); // call it every time to take care about memory if ($value === false) { return $value; } // already tried to load once if ($value === null) { $parameters = array('key' => $key, 'keys' => $keys, 'keys_arr' => $keysArr); if (is_callable($loadCallback)) { call_user_func_array($loadCallback, array($parameters)); } else { do_action('tf_load_cache', $parameters); } unset($parameters); // try again to get value (maybe someone loaded it) $value = tf_akg($keys, self::$cache, null, $keysDelimiter); if ($value === null) { // no one loaded it (or not exists), set it to false, so next time to not try to load it tf_aks($keys, false, self::$cache, $keysDelimiter); return false; } } return $value; }
/** * Find recursively keys value in array * $keys can be explode('.', 'a.b') or 'a.b' * * Initial array(a=>array(b=>foo)) * $keys=[a,b] -> return array[a][b] -> value * $keys=[a.c] -> return array[a][ UNDEFINED ] -> NULL * * TEST: $temp = array('a' => array('b'=>'val1') ); var_dump( array( tf_akg('a', $temp), tf_akg('a.b', $temp), tf_akg('a.b.c', $temp), tf_akg('a.c', $temp), )); */ function tf_akg($keys, &$arrayOrObject, $defaultValue = NULL, $keysDelimiter = '.') { if (is_string($keys) || is_int($keys)) { $keys = explode($keysDelimiter, (string) $keys); } $keyOrProperty = array_shift($keys); if ($keyOrProperty === NULL) { return $defaultValue; } $isObject = is_object($arrayOrObject); if ($isObject) { if (!property_exists($arrayOrObject, $keyOrProperty)) { return $defaultValue; } } else { if (!isset($arrayOrObject[$keyOrProperty])) { return $defaultValue; } } if (isset($keys[0])) { // not used count() for performance reasons if ($isObject) { return tf_akg($keys, $arrayOrObject->{$keyOrProperty}, $defaultValue); } else { return tf_akg($keys, $arrayOrObject[$keyOrProperty], $defaultValue); } } else { if ($isObject) { return $arrayOrObject->{$keyOrProperty}; } else { return $arrayOrObject[$keyOrProperty]; } } }
/** * @param $dotKey * @param $defaultValue * @return array|null */ public final function getSqlData($dotKey = null, $defaultValue = array()) { return $dotKey === null ? $this->sqlData : tf_akg($dotKey, $this->sqlData, $defaultValue, '/'); }