/**
  * 获取还原(非转义)后的  $_GET / $_POST / $_FILES / $_COOKIE / $_REQUEST / $_SERVER / $_ENV
  * @param string $vRoute 变量路由,规则为:“<第一个字母>[:变量索引/[变量索引]]
  * 例:	V('g:TEST/BB'); 表示获取 $_GET['TEST']['BB']
  * V('p'); 		表示获取 $_POST
  * V('c:var_name');表示获取 $_COOKIE['var_name']
  * 第一个字母需要为小写
  * @param mixed $def_v 默认值
  * @param boolen $setVar 强制初始化值,并返回true
  * @return mixed 当使用强制初始化值时,返回true;否则,将返回指定变量路由规则的变量。
  */
 function V($vRoute, $def_v = NULL, $setVar = false)
 {
     static $v = array();
     static $vKeyMap = array('C' => '_COOKIE', 'G' => '_GET', 'P' => '_POST', 'R' => '_REQUEST', 'F' => '_FILES', 'S' => '_SERVER', 'E' => '_ENV');
     $vRoute = trim($vRoute);
     //强制初始化值
     if ($setVar) {
         $v[$vRoute] = $def_v;
         return true;
     }
     if (!isset($v[$vRoute])) {
         if (empty($_REQUEST)) {
             $_REQUEST = array_merge($_GET, $_POST, $_COOKIE);
         }
         if (!preg_match("#^([cgprfse])(?::(.+))?\$#sim", $vRoute, $m) || !isset($vKeyMap[strtoupper($m[1])])) {
             trigger_error("Can't parse var from vRoute: {$vRoute} ", E_USER_WARNING);
             return NULL;
         }
         $m[1] = strtoupper($m[1]);
         $tv = $GLOBALS[$vKeyMap[$m[1]]];
         if (empty($tv)) {
             $v[$vRoute] = $def_v;
         } elseif (empty($m[2])) {
             $v[$vRoute] = ($m[1] == 'F' || $m[1] == 'S') && version_compare(PHP_VERSION, '5.0.0', '>=') ? $tv : XWB_plugin::_magic_var($tv);
         } else {
             $vr = explode('/', $m[2]);
             foreach ($vr as $vk) {
                 if (!isset($tv[$vk])) {
                     $tv = $def_v;
                     break;
                 }
                 $tv = $tv[$vk];
             }
             $v[$vRoute] = ($m[1] == 'F' || $m[1] == 'S') && version_compare(PHP_VERSION, '5.0.0', '>=') ? $tv : XWB_plugin::_magic_var($tv);
         }
     }
     return $v[$vRoute];
 }