>백엔드 개발 >PHP 튜토리얼 >매개변수 형식 읽기

매개변수 형식 읽기

WBOY
WBOY원래의
2016-07-25 08:47:21982검색
phper로서 OSC에 합류하면서 지금까지 공유한 유일한 코드가 php라는 것을 오늘에서야 알았습니다. 프로젝트에서 작성한 공통 클래스를 공유했습니다.

/ordinary 배열은 키를 통해 형식화된 데이터를 반환합니다
http://www.du52.com/text.php?id=581
  1. include_once('Param.class.php');
  2. // GET/POST 데이터 설정 시뮬레이션
  3. $_REQUEST['int' ] = '1243';
  4. $_REQUEST['str'] = '안녕하세요';
  5. $_REQUEST['bool'] = 'true';
  6. $_REQUEST['arr'] = '1, 2,3,4';
  7. $_REQUEST['json'] = json_encode(array('a' => 'a', 'b' => 'b'));
  8. $_REQUEST[ 'date'] = date('Y-m-d H:i:s');
  9. // 단일 데이터 읽기
  10. var_dump(Param::getInt('int', 0));echo '
    var_dump(Param::getInt('undefine-int', -1));echo '
    ';
  11. var_dump(Param::getStr('str', ' default '));echo '
    ';
  12. var_dump(Param::getBool('bool', NULL));echo '
    ';
  13. var_dump(Param: : : getStrArray('arr', ',', NULL));echo '
    ';
  14. var_dump(Param::getJson('json', NULL));echo '
    ';
  15. var_dump(Param::getTime('date', -1));echo '
    ';
  16. echo '
    ';echo '
    ';
  17. // 일괄 획득
  18. $fields = array();
  19. $fields[] = array('int', Param::$FIELD_TYPE_INT, 0);
  20. $fields [ ] = array('undefine-int', Param::$FIELD_TYPE_INT, -1);
  21. $fields[] = array('str', Param::$FIELD_TYPE_STR, 'default');
  22. $ 필드 [] = 배열('bool', Param::$FIELD_TYPE_BOOL, 0);
  23. $fields[] = 배열('arr', Param::$FIELD_TYPE_STRARR, 0);
  24. $fields[] = 배열 ('json', Param::$FIELD_TYPE_JSON, 0);
  25. $fields[] = array('date', Param::$FIELD_TYPE_TIME, -1);
  26. $data = Param::parse( $ fields);
  27. var_dump($data);
  28. echo '
    ';echo '
    ';
  29. // 배열 데이터 가져오기
  30. $source = array ('int' => '1234', 'str' => 'hello');
  31. var_dump(Param::getInt('int', -1));echo '
    ;
  32. var_dump(Param::getStr('str', 'default'));echo '
    ';
  33. ?>
코드 복사
  1. int(1243)
  2. int(-1)
  3. string(5) "hello"
  4. bool(true)
  5. array(4) { [ 0]=> 문자열(1) "1" [1]=> 문자열(1) "2" [2]=> 문자열(1) "3" [3]=> " }
  6. array(2) { ["a"]=> string(1) "a" ["b"]=> string(1) "b" }
  7. int(1408603747)
  8. array(7) { ["int"]=> int(1243) ["undefine-int"]=> int(-1) ["str"]=> ) "안녕하세요" ["bool"]=> bool(true) ["arr"]=> array(4) { [0]=> 1) "2" [2]=> 문자열(1) "3" [3]=> 문자열(1) "4" } ["json"]=> 배열(2) => string(1) "a" ["b"]=> string(1) "b" } ["date"]=> int(1408603747) }
  9. int(1243)
  10. string(5) "hello"
코드 복사
  1. /**
  2. * 매개변수 관리
  3. *
  4. * @author wangaibo168@163.com
  5. * @charset utf-8
  6. */
  7. class Param {
  8. /**
  9. *기본 생성자
  10. */
  11. 비공개 함수 __construct(){}
  12. /**
  13. * 기본 데이터 가져오기
  14. * @param $name
  15. * @param null $def
  16. * @param null $arr
  17. * @return null
  18. */
  19. 공개 정적 함수 getData($name,$def=null,$arr=null){
  20. if (is_null($name) || $name==='') return $def;
  21. $name = Trim($name);
  22. $temp = is_array($arr)?$arr:$_REQUEST;
  23. if(array_key_exists($name,$temp)) return $temp[$name];
  24. return $def;
  25. }
  26. /**
  27. * 문자열 데이터 가져오기
  28. * @param $name
  29. * @param string $def
  30. * @param null $arr
  31. * @return string
  32. */
  33. 공용 정적 함수 getStr($name,$def='',$arr=null){
  34. $value = self::getData($name,$def,$arr);
  35. return @strval($value );
  36. }
  37. /**
  38. * 수치 데이터 가져오기
  39. * @param $name
  40. * @param int $def
  41. * @param null $arr
  42. * @return int
  43. */
  44. 공개 정적 함수 getInt($name,$def=0,$arr=null){
  45. $value = self: :getData($name,$def,$arr);
  46. return @intval($value);
  47. }
  48. /**
  49. * 부울 유형 데이터 가져오기
  50. * @param $name
  51. * @param bool $def
  52. * @param null $arr
  53. * @return bool
  54. */
  55. 공용 정적 함수 getBool( $name,$def=false,$arr=null){
  56. $value = self::getData($name,$def,$arr);
  57. if(is_string($value)){
  58. $value = strtolower($value);
  59. if($value=='true' || $value=='1') true 반환;
  60. if($value=='false' || $value=='0') false 반환;
  61. }
  62. if(is_int($value) ){
  63. if($value==1) return true;
  64. if($value==0) return false;
  65. }
  66. if(is_object($value)){
  67. return $value!=null;
  68. }
  69. return $def;
  70. }
  71. /**
  72. * 배열 유형 데이터 가져오기
  73. * @param $name
  74. * @param array $def
  75. * @param null $arr
  76. * @return array
  77. */
  78. 공개 정적 함수 getArray($name,$def=array (),$arr=null){
  79. $value = self::getData($name,$def,$arr);
  80. if(!is_array($value)){
  81. $value = 배열 ($value);
  82. }
  83. return $value;
  84. }
  85. /**
  86. * JSON 형식 데이터 가져오기
  87. * @param $name
  88. * @param array $def
  89. * @param null $arr
  90. * @return array
  91. */
  92. 공개 정적 함수 getJson($name,$def=array( ),$arr=null){
  93. $value = self::getStr($name,null,$arr);
  94. if($value==null) return $def;
  95. $value = @ json_decode($value,true);
  96. if(is_array($value) && count($value)>0) return $value;
  97. return $def;
  98. }
  99. / **
  100. * 시간 형식은 2013-12-02 11:00:11이며 타임스탬프로 변환됩니다.
  101. * @param $name
  102. * @param int $def
  103. * @param null $arr
  104. * @return int
  105. */
  106. 공개 정적 함수 getTime($name,$def=0,$arr=null){
  107. $value = self::getStr($name,'',$arr);
  108. if(empty($value)) return $def;
  109. $value = Trim($value);
  110. if(preg_match('/^([0-9]{4})-([ 0-9]{1,2})-([0-9]{1,2})s ([0-9]{1,2}):([0-9]{1,2}): ([0-9]{1,2})$/',$value,$ret)){
  111. if(is_array($ret) && count($ret)==7){
  112. 목록( $t,$y,$m,$d,$h,$mi,$s) = $ret;
  113. return mktime($h,$mi,$s,$m,$d,$y);
  114. }else{
  115. return $def;
  116. }
  117. }
  118. if(preg_match('/^([0-9]{4})-([0-9]{1 ,2})-([0-9]{1,2})$/',$value,$ret)){
  119. if(is_array($ret) && count($ret)==4){
  120. list($t,$y,$m,$d) = $ret;
  121. return mktime(0,0,0,$m,$d,$y);
  122. }else{
  123. return $def;
  124. }
  125. }
  126. return $def;
  127. }
  128. /**
  129. * 시간 형식은 2013-12-02 11:00:11이며 숫자(14자리)로 변환됩니다.
  130. * @param $name
  131. * @param string $def
  132. * @param null $ arr
  133. * @return bool|string
  134. */
  135. 공개 정적 함수 getDate($name, $def='00000000000000',$arr=null){
  136. $value = self::getTime($name,0,$arr);
  137. if($value>0){
  138. 반환 날짜( 'YmdHis',$value);
  139. }
  140. return $def;
  141. }
  142. /**
  143. * 格式化字串日期為標準日期
  144. * @param $value
  145. * @param bool $full
  146. * @param string $def
  147. * @return string
  148. */
  149. public static function formatDate($value,$full=false,$def=''){
  150. if(empty($value)) return $ def;
  151. $value = trim($value);
  152. if(preg_match('/^([0-9]{4})([0-9]{2})([0-9] {2})([0-9]{2})([0-9]{2})([0-9]{2})$/',$value,$ret)){
  153. if (is_array($ret) && count($ret)==7){
  154. list($t,$y,$m,$d,$h,$mi,$s) = $ret;
  155. if($y==0 || $m==0 || $d==0) return $def;
  156. if(!$full && $h==0 && $mi==0 && $s= =0){
  157. return "$y-$m-$d";
  158. }
  159. return "$y-$m-$d $h:$mi:$s";
  160. } else{
  161. return $def;
  162. }
  163. }
  164. }
  165. /**
  166. * 取得浮點數資料
  167. * @param $name
  168. * @param int $def
  169. * @param null $arr
  170. * @return float
  171. */
  172. 公用靜態函數($name,$def=0 ,$arr=null){
  173. $value = self::getData($name,$def,$arr);
  174. return @doubleval($value);
  175. }
  176. / **
  177. * 取得並將字串轉換為陣列
  178. * @param $name
  179. * @param string $limit
  180. * @param array $def
  181. * @param null $arr
  182. * @return array
  183. */
  184. 公用靜態函式getStrArray($name,$limit=',',$def=array(),$arr=null){
  185. $value = self::getStr($ name,'',$arr);
  186. if(empty($value)) return $def;
  187. $arr =explode($limit,$value);
  188. if(!is_array($arr) ) return $def;
  189. $value = array();
  190. foreach($arr as $v){
  191. if(empty($v)) continue;
  192. $value[] = $v ;
  193. }
  194. return $value;
  195. }
  196. /**
  197. * 設定原生資料
  198. * @param $name
  199. * @param $value
  200. */
  201. public static function setData($name,$value){
  202. if(空($name)) return;
  203. $_GET[$name] = $value;
  204. $_POST[$name] = $value;
  205. $_REQUEST[$name] = $value;
  206. }
  207. /**
  208. * 根據舊的資料設定新的原生資料
  209. * @param $name
  210. * @param $oldName
  211. */
  212. public static function setDataByName($name,$oldName){
  213. if(empty($name) ||空($oldName)) return;
  214. $value = self::getData($oldName);
  215. self::setData($name,$value);
  216. }
  217. /* *
  218. * @var string 原生資料型別
  219. */
  220. public static $FIELD_TYPE_DATA = 'data';
  221. /**
  222. * @var string 數值資料型別
  223. */
  224. public static $FIELD_TYPE_INT = 'int';
  225. /** * @var string 字串資料型別
  226. **/
  227. public static $FIELD_TYPE_STR = 'str';
  228. /**
  229. * @var string 浮點數資料型別
  230. */
  231. public static $FIELD_TYPE_DOUBLE = 'double';
  232. ** */
  233. public static $FIELD_TYPE_BOOL = 'bool';
  234. /**
  235. * @var string 布林資料型別
  236. */
  237. public static $FIELD_TYPE_JSON = 'json';
  238. public static $FIELD_TYPE_JSON = 'json';
  239. >
  240. * @var string JSON資料型別
  241. */
  242. public static $FIELD_TYPE_ARRAY = 'array';
  243. /**
  244. * @var string 陣列資料型別
  245. */
  246. public static $FIELD_TYPE_TIME = '時間';
  247. /**
  248. * @var string 時間戳記資料型別
  249. */
  250. public static $FIELD_TYPE_DATE = 'date';
  251. /**
  252. * @var string 字串時間資料型別
  253. */
  254. public static $FID_TY ';
  255. /**
  256. * @var string 字串陣列資料型別
  257. */
  258. 公共靜態函數parse($fields){
  259. if(!is_array($fields) || count($fields)==0) return array();
  260. $data = array();
  261. foreach($fields as $field){
  262. if(!is_array($field) || count($field)!=3) continue ;
  263. list($name,$type,$def) = $field;
  264. if(empty($name) ||empty($type)) continue;
  265. $type = strtolower($type) ;
  266. if($type==self::$FIELD_TYPE_DATA){
  267. $value = self::getData($name,$def);
  268. }else if($type==self::$ FIELD_TYPE_INT){
  269. $value = self::getInt($name,$def);
  270. }else if($type==self::$FIELD_TYPE_STR){
  271. $value = self::getStr( $name,$def);
  272. }else if($type==self::$FIELD_TYPE_DOUBLE){
  273. $value = self::getDouble($name,$ def);
  274. }else if( $type==self::$FIELD_TYPE_BOOL){
  275. $value = self::getBool($name,$def);
  276. }else if($type== self::$FIELD_TYPE_ARRAY){
  277. $value = self::getArray($name,$def);
  278. }else if($type==self::$FIELD_TYPE_TIME){
  279. $value = self::getTime($name,$def);
  280. }else if($type==self::$FIELD_TYPE_DATE){
  281. $value = self::getDate($name,$def);
  282. }else if($type==self::$FIELD_TYPE_JSON){
  283. $value = self::getJson($name, $def);
  284. }else if($type==self::$FIELD_TYPE_STRARR){
  285. $value = self::getStrArray($name,',',$def);
  286. }else{
  287. $value = $def;
  288. }
  289. $data[$name] = $value;
  290. }
  291. return $data;
  292. }
  293. /**
  294. * JSON 데이터 형식
  295. * @param $name
  296. * @param $fields
  297. * @param null $arr
  298. * @return 배열
  299. */
  300. 공개 정적 함수 parseJSON($name,$fields,$arr=null){
  301. if(!is_array($fields) || count($fields)==0) return array( );
  302. $data = array();
  303. $temp = self::getJson($name,null,$arr);
  304. if(!is_array($temp)) $temp = array() ;
  305. foreach($fields as $field){
  306. if(!is_array($field) || count($field)!=3) continue;
  307. list($name,$type,$def ) = $field;
  308. if(empty($name) || 비어 있음($type)) 계속;
  309. $type = strtolower($type);
  310. if($type==self::$FIELD_TYPE_DATA){
  311. $value = self::getData($name, $def,$temp);
  312. }else if($type==self::$FIELD_TYPE_INT){
  313. $value = self::getInt($name,$def,$temp);
  314. } else if($type==self::$FIELD_TYPE_STR){
  315. $value = self::getStr($name,$def,$temp);
  316. }else if($type==self::$ FIELD_TYPE_DOUBLE){
  317. $value = self::getDouble($name,$def,$temp);
  318. }else if($type==self::$FIELD_TYPE_BOOL){
  319. $value = self: :getBool($name,$def,$temp);
  320. }else if($type==self::$FIELD_TYPE_ARRAY){
  321. $value = self::getArray($name,$def,$temp );
  322. }else if($type==self::$FIELD_TYPE_TIME){
  323. $value = self::getTime($name,$def,$temp);
  324. }else if($type ==self::$FIELD_TYPE_DATE){
  325. $value = self::getDate($name,$def,$temp);
  326. }else if($type==self::$FIELD_TYPE_JSON){
  327. $value = self::getJson($name,$def,$temp);
  328. }else if($type==self::$FIELD_TYPE_STRARR){
  329. $value = self::getStrArray($name ,',',$def,$temp);
  330. }else{
  331. $value = $def;
  332. }
  333. $data[$name] = $value;
  334. }
  335. $data 반환;
  336. }
  337. }
  338. ?>
复제대码


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.