Example #1
0
 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);
     }
 }
Example #2
0
 public function get($key, $default_value = null)
 {
     $this->start_session();
     return tf_akg($key, $_SESSION, $default_value);
 }
Example #3
0
 /**
  * @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;
 }
Example #4
0
/**
* 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];
        }
    }
}
Example #5
0
 /**
  * @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, '/');
 }