ホームページ  >  記事  >  バックエンド開発  >  入力データ統一エントリークラス

入力データ統一エントリークラス

WBOY
WBOYオリジナル
2016-07-25 09:01:57881ブラウズ
入力データ統一エントリークラス http://blog.qita.in/?post=494
    /**
  1. * 入力用の統一された入り口を取得します
  2. */
  3. class cls_request
  4. {
  5. private $getdata; //ストレージ取得データ
  6. private $postdata; //ストレージリクエストデータ
  7. private $ filedata; //ストレージファイルデータ
  8. private $cookiedata; //ストレージクッキー
  9. static $_instance; //このクラスのインスタンス
  10. private function __construct()
  11. {
  12. $this->getdata = self:: format_data; _GET);
  13. $this->postdata = self::format_data($_POST);
  14. $this->requestdata = array_merge($this->getdata, $this->postdata);
  15. $this-> ;cookiedata = self::format_data($_COOKIE);
  16. $this->filedata = self::format_data($_FILES);
  17. }
  18. /**
  19. * クラス初期化メソッド
  20. *
  21. * @return cls_request オブジェクト
  22. */
  23. public static function get_instance()
  24. {
  25. if(!(self::$_instance instanceof self))
  26. {
  27. self::$_instance = new self();
  28. }
  29. return self::$_instance;
  30. }
  31. /**
  32. * GETで渡された数値変数を取得
  33. *
  34. * @param string $key
  35. * @return int or big int
  36. */
  37. public function get_num($key)
  38. {
  39. if(!isset($this->getdata[$key]))
  40. {
  41. return false;
  42. }
  43. return $this->to_num($this- >getdata [$key]);
  44. }
  45. /**
  46. * POSTで渡された数値変数を取得
  47. *
  48. * @param string $key
  49. * @return int or big int
  50. */
  51. public function post_num($key)
  52. {
  53. if(!isset($this->postdata[$key]))
  54. {
  55. return false;
  56. }
  57. return $this->to_num($this->postdata[$key]);
  58. }
  59. /**
  60. * REQUESTで渡された数値変数を取得します
  61. *
  62. * @param string $key
  63. * @return int or big int
  64. */
  65. public function request_num($key)
  66. {
  67. if( !isset($this->requestdata[$key]))
  68. {
  69. return false;
  70. }
  71. return $this->to_num($this->requestdata[$key]);
  72. }
  73. /* *
  74. * Cookie によって渡された数値変数を取得します
  75. *
  76. * @param string $key
  77. * @return int または big int
  78. */
  79. public function cookie_num($key)
  80. {
  81. if(!isset($this->cookiedata[$key]))
  82. {
  83. return false;
  84. }
  85. return $this- >to_num ($this->cookiedata[$key]);
  86. }
  87. /**
  88. * Files によって渡された変数値を取得します
  89. *
  90. * @param string $key
  91. * @return array
  92. */
  93. public function file_data($key)
  94. {
  95. return $this->filedata[$key] ;
  96. }
  97. /**
  98. * GETで渡された文字列変数を取得
  99. *
  100. * @param string $key
  101. * @param boolen $isfilter フィルタリングするかどうか
  102. * @return string
  103. */
  104. public function get_string($key,$isfilter=true)
  105. {
  106. if(!isset($this->getdata[$key]))
  107. {
  108. return false;
  109. }
  110. if($isfilter)
  111. {
  112. return $this->gt;filter_string($this->getdata[$key]);
  113. }
  114. else
  115. {
  116. return $this->getdata[$key ];
  117. }
  118. }
  119. /**
  120. * POSTで渡された文字列変数を取得します
  121. *
  122. * @param string $key
  123. * @param boolen $isfilter フィルタリングするかどうか
  124. * @return string
  125. */
  126. public function post_string($key,$isfilter=true)
  127. {
  128. if(!isset($this->postdata[$key]))
  129. {
  130. return false;
  131. }
  132. if($isfilter)
  133. {
  134. return $this->gt;filter_string($this->postdata[$key]);
  135. }
  136. else
  137. {
  138. return $this->postdata [$key] ];
  139. }
  140. }
  141. /**
  142. * REQUEST で渡された文字列変数を取得します
  143. *
  144. * @param string $key
  145. * @param boolen $isfilter フィルタリングするかどうか
  146. * @return string
  147. */
  148. public function request_string($key,$isfilter=true)
  149. {
  150. if(!isset($this->requestdata[$key] ))
  151. {
  152. return false;
  153. }
  154. if($isfilter)
  155. {
  156. return $this->filter_string($this->requestdata[$key]);
  157. }
  158. else
  159. {
  160. return $this->requestdata [$key];
  161. }
  162. }
  163. /**
  164. * COOKIEで渡された文字列変数を取得します
  165. *
  166. * @param string $key
  167. * @param boolen $isfilter フィルタリングするかどうか
  168. * @return string
  169. */
  170. public function cookie_string($key,$isfilter=true)
  171. {
  172. if(!isset($this->cookiedata[ $key] ))
  173. {
  174. return false;
  175. }
  176. if($isfilter)
  177. {
  178. return $this->filter_string($this->cookiedata[$key]);
  179. }
  180. else
  181. {
  182. return $this- >cookiedata[$key];
  183. }
  184. }
  185. /**
  186. * データのフォーマットとデータの転送
  187. *
  188. * @param array $data
  189. */
  190. プライベート関数 format_data($data)
  191. {
  192. $result = array();
  193. if(!is_array($data))
  194. {
  195. $data = array();
  196. }
  197. while(list($key, $value) = each($data))
  198. {
  199. //処理checkbox之类的データ
  200. if(is_array($value))
  201. {
  202. $result[$key]=$value ;
  203. }
  204. else //普通数据
  205. {
  206. $result[$key] = trim($value);
  207. }
  208. }
  209. return $result;
  210. }
  211. /**
  212. * 数値に変換します
  213. *
  214. * @param string $num
  215. * @return int または big int または false
  216. */
  217. private function to_num( $num)
  218. {
  219. if(is_numeric($num))
  220. {
  221. return intval($num);
  222. }
  223. else
  224. {
  225. return false;
  226. }
  227. }
  228. /**
  229. * フィルター文字列を変換
  230. *
  231. * @param string/array $data
  232. * @return string
  233. */
  234. プライベート関数filter_string($data)
  235. {
  236. if($data===NULL)
  237. {
  238. return false;
  239. }
  240. if (is_array($data))
  241. {
  242. foreach ($data as $k=>$v)
  243. {
  244. $data[$k] = htmlspecialchars($v, ENT_QUOTES);
  245. }
  246. return $data;
  247. }
  248. else
  249. {
  250. return htmlspecialchars($data, ENT_QUOTES);
  251. }
  252. }
  253. }
复制代コード


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。