// +---------------------------------------------------------------------- // $Id$ namespace Think; class Input { /** * 获取系统变量 支持过滤和默认值 * @access public * @param string $type 输入数据类型 * @param array $args 参数 array(key,filter,default) * @return mixed */ static public function __callStatic($type,$args=array()) { switch(strtolower($type)) { case 'get': $input =& $_GET;break; case 'post': $input =& $_POST;break; case 'put' : parse_str(file_get_contents('php://input'), $input);break; case 'param' : switch($_SERVER['REQUEST_METHOD']) { case 'POST': $input = $_POST; break; case 'PUT': parse_str(file_get_contents('php://input'), $input); break; default: $input = $_GET; } break; case 'request': $input =& $_REQUEST;break; case 'server': $input =& $_SERVER;break; case 'cookie': $input =& $_COOKIE;break; case 'session': $input =& $_SESSION;break; case 'globals': $input =& $GLOBALS;break; default:return NULL; } if(''== $args[0]) { // 返回全部数据 return $input; }elseif(array_key_exists($args[0],$input)) { $filters = isset($args[1])?$args[1]:''; $filters = explode(',',$filters); $data = $input[$args[0]]; foreach($filters as $filter){ if(is_callable($filter)) { $data = is_array($data)?array_map($filter,$data):$filter($data); // 参数过滤 }else{ $data = filter_var($data,is_int($filter)?$filter:filter_id($filter)); if(false === $data) { return isset($args[2])?$args[2]:NULL; } } } }else{ // 不存在指定输入 $data = isset($args[2])?$args[2]:NULL; } return $data; } }