public static function get($name = null, $range = null, $inherit=true)
    {
        $range = $range ?: self::$range;
        
        // load default
        static::autoload($range);
        
        $value = null;
        if (empty($name)) {// get all
            $value = isset(self::$data[$range]) ? self::$data[$range] : null;
        } elseif (isset(self::$data[$range][$name])){
            $value = self::$data[$range][$name];
        } elseif (strpos($name, '.')) { // has '.'
            $names    = explode('.', $name, 3);
            if (count($names) > 2) {
                $value = isset(self::$data[$range][$names[0]][$names[1]][$names[2]]) ? self::$data[$range][$names[0]][$names[1]][$names[2]] : null;
            } else {
                $value = isset(self::$data[$range][$names[0]][$names[1]]) ? self::$data[$range][$names[0]][$names[1]] : null;
            }
        }
        
        // if inherit get default range config  && 
        if ($range !== self::$range && $inherit) {
            if ($value === null) {
                $value = self::get($name, self::$range, false);
            } elseif (is_array($value)) {
                $vd = self::get($name, self::$range, false);
                $value = ArrayHelper::merge($vd, $value);
            }
        }
        
        return $value;
    }