首頁  >  文章  >  後端開發  >  php驗證類別

php驗證類別

WBOY
WBOY原創
2016-07-25 09:12:121037瀏覽
一個可擴展的php驗證類,
類裡面可以的各類驗證可自行調整實現,現在為基本實現方式。
需要新增規則的話, 直接定義方法,方法名稱即為規則名稱。具體參考使用方法。
  1. require_once('./Validator.class.php');
  2. $data = array(
  3. 'nickname' => 'heno' ,
  4. 'realname
  5. 'nickname' => 'heno' ,
  6. 'realname ' => 'steven',
  7. 'age' => 25,
  8. 'mobile' => '1521060426');
  9. $validator = new Validator($data);
  10. $validator->setRule('nickname', 'required');
  11. $validator->setRule('realname', array('length' => array(1,6), 'required'));
  12. $validator->setRule('age', array('required', 'digit'));
  13. $validator->setRule('mobile', array('mobile'));
  14. $ result = $validator->validate();
var_dump($result);
var_dump($validator->getResultInfo());
複製程式碼複製程式碼複製程式碼複製程式碼複製程式碼複製程式碼複製程式碼複製程式碼複製程式碼
  1. /**
  2. * Validator 資料驗證類別
  3. * @package library
  4. * @category library
  5. * @author Steven
  6. * @version 1.0
  7. */
  8. /**
  9. * Validator 資料驗證類別
  10. * @package library
  11. * @category library
  12. * @author Steven
  13. * @version 1.0
  14. */
  15. class Validator {
  16. /**
  17. * 待校驗資料
  18. * @var array
  19. */
  20. private $_data;
  21. /**
  22. * 校驗規則
  23. * @var array
  24. */
  25. private $_ruleList = null;
  26. * 校驗結果
  27. * @var bool
  28. */
  29. private $_ruleList = null;
  30. * 校驗資料資訊
  31. * @var array
  32. */
  33. private $_result = null;
  34. /**
  35. * 建構子
  36. * @param array $data 待校驗資料
  37. */
  38. private $_resultInfo = array();
  39. /**
  40. * 設定校驗規則
  41. * @param string $var 帶校驗項key
  42. * @param mixed $rule 校驗規則
  43. * @return void
  44. */
  45. public function __construct($data = null)
  46. {
  47. if ($data) {
  48. $this->_data = $data;
  49. }
  50. }
  51. }
  52. /**
  53. * 檢定資料
  54. * @param array $data
  55. * <li> * $data = array('nickname' => 'heno' , 'realname' => 'steven ', '年齡' => 25);</li> <li> * $validator = new Validator($data);</li> <li> * $validator->setRule('暱稱', '必填');</li> <li> * $ validator->setRule ('真名', array('長度' => array(1,4), '必填'));</li> <li> * $validator->setRule('年齡', array('必填) ', '數字') );</li> <li> * $result = $validator->validate();</li> <li> * var_dump($validator->getResultInfo());</li> <li> * </li>
  56. * @return bool
  57. */
  58. public function setRule($var, $rule)
  59. {
  60. $this->_ruleList[$var] = $rule;
  61. }
  62. /**
  63. * 取得校驗結果資料
  64. * @return [type] [description]
  65. */
  66. public function validate($data = null)
  67. {
  68. $result = true;
  69. /* 如果沒有設定校驗規則直接回傳true */
  70. if ($this->_ruleList === null || !count($this->_ruleList)) {
  71. return $result;
  72. }
  73. /* 已設定規則,則對規則逐條進行校驗*/
  74. foreach ($this->_ruleList as $ruleKey => $ruleItem) {
  75. /* 如果檢定規則為單一規則*/
  76. if (!is_array($ruleItem)) {
  77. $ruleItem = trim($ruleItem);
  78. if (method_exists($this, $ruleItem)) {
  79. /*校驗數據,儲存校驗結果*/
  80. $tmpResult = $this->$ruleItem($ruleKey);
  81. if (!$tmpResult) {
  82. $this->_resultInfo[$ruleKey][ $ruleItem] = $tmpResult;
  83. $result = false;
  84. }
  85. }
  86. continue;
  87. }
  88. /* 校驗規則為多條*/ foreach ($ruleItem as $ruleItemKey => $rule) {
  89. if (!is_array($rule)) {
  90. $rule = trim($rule);
  91. if (method_exists($ this, $rule)) {
  92. /* 校驗數據,設定結果集*/
  93. $tmpResult = $this->$rule($ruleKey);
  94. if (!$tmpResult) {
  95. $this->_resultInfo[$ruleKey][$rule] = $tmpResult;
  96. $result = false;
  97. }
  98. }
  99. } else {
  100. if (method $this, $ruleItemKey)) {
  101. /* 校驗數據,設定結果集*/
  102. $tmpResult = $this->$ruleItemKey($ruleKey, $rule);
  103. if ( !$tmpResult) {
  104. $this->_resultInfo[$ruleKey][$ruleItemKey] = $tmpResult;
  105. $result = false;
  106. }
  107. }
  108. }
  109. }
  110. }
  111. }
  112. }
  113. }
  114. }
  115. }
  116. }
  117. }
  118. }
  119. }
  120. }
  121. }
  122. }
  123. }
  124. }
  125. }
  126. }
  127. }
  128. }
  129. }
  130. }
  131. }
  132. }
  133. }
  134. }
  135. }
  136. } 🎜> }
  137. return $result;
  138. }
  139. /**
  140. * 校驗必填參數
  141. * @param string $varName 校驗項
  142. * @return bool
  143. */
  144. public function getResultInfo()
  145. {
  146. return $this-this-this-this-this >_resultInfo;
  147. }
  148. /**
  149. * 校驗參數長度
  150. *
  151. * @param string $varName 校驗項目
  152. * @param array $lengthData array($minLen, $maxLen)
  153. * @return bool
  154. */ public function required($varName) { $result = false; if (is_array(> $result = false; if (is_array(> $result = false; if (is_array(); $this->_data) && isset($this->_data[$varName])) { $result = true; } return $result; } /***/ public function length($varName, $lengthData) { $result = true; /* 如果該項目沒有設置,預設為校驗通過*/ if ($this->required($varName)) { $varLen = mb_strlen($this->_data[$varName]); $minLen = $lengthData [0]; $maxLen = $lengthData[1]; if ($varLen $maxLen) { $result = true; } } return $result; }
  155. /**
  156. * 校驗郵件
  157. * @param string $varName 校驗項
  158. * @return bool
  159. */
  160. public function email($varName)
  161. {
  162. $result = true;
  163. /* 如果該項沒有設置,預設為校驗通過*/
  164. if ($this->required($varName)) {
  165. $email = trim($this->_data[$varName]);
  166. if ( preg_match('/^[-w]+?@[-w.]+?$/', $email)) {
  167. $result = false;
  168. }
  169. }
  170. return $result ;
  171. }
  172. /**
  173. * 校驗手機
  174. * @param string $varName 校驗項目
  175. * @return bool
  176. */
  177. public function mobile($varName)
  178. {
  179. $result = true;
  180. {
  181. $result = true;
  182. /* 如果* 如果* 如果*該項沒有設置,預設為校驗通過*/
  183. if ($this->required($varName)) {
  184. $mobile = trim($this->_data[$varName]);
  185. if (!preg_match('/^1[3458]d{10}$/', $mobile)) {
  186. $result = false;
  187. }
  188. }
  189. return $result ;
  190. }
  191. /**
  192. * 校驗參數為數字
  193. * @param string $varName 校驗項
  194. * @return bool
  195. */
  196. public function digit($varName)
  197. {
  198. $result = false;
  199. if ($this-> required($varName) && is_numeric($this->_data[$varName])) {
  200. $result = true;
  201. }
  202. return $result;
  203. }
  204. /**
  205. * 校驗參數為身分證
  206. * @param string $varName 校驗項
  207. * @return bool
  208. */
  209. public function ID($ID)
  210. {
  211. }
  212. /**
  213. * 校驗參數為URL
  214. * @param string $varName 校驗項
  215. * @return bool
  216. */*/ public function url($url)
  217. {
  218. $result = true;
  219. /* 如果該項沒有設置,預設為校驗通過*/
  220. if ($this-> required($varName)) {
  221. $url = trim($this->_data[$varName]);
  222. if(!preg_match('/^(http[s]?::)?w+?( .w+?)$/', $url)) {
  223. $result = false;
  224. }
  225. }
  226. return $result;
  227. }
  228. }
?>
複製程式碼


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn