PHP検証クラス

WBOY
リリース: 2016-07-25 09:12:12
オリジナル
1063 人が閲覧しました
拡張可能な PHP 検証クラス。
クラス内のさまざまな検証を独自に調整して実装できます。 これが現在の基本的な実装方法です。
ルールを追加する必要がある場合は、メソッドを直接定義します。メソッド名がルール名になります。詳しくはご利用方法をご確認ください。
  1. require_once('./Validator.class.php');
  2. $data = array(
  3. 'ニックネーム' => 'heno' ,
  4. '本名' => 'スティーブン',
  5. '年齢' = > 25,
  6. 'モバイル' => '1521060426');
  7. $validator = 新しい Validator($data);
  8. $validator->setRule('ニックネーム', '必須');
  9. $validator- >setRule('realname', array('length' => array(1,6), 'required'));
  10. $validator->setRule('age', array('required', 'digit' ));
  11. $validator->setRule('mobile', array('mobile'));
  12. $result = $validator->validate();
  13. var_dump($result);
  14. 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 配列
  19. */
  20. private $_data;
  21. / **
  22. * 検証ルール
  23. * @var 配列
  24. */
  25. private $_ruleList = null;
  26. /**
  27. * 検証結果
  28. * @var bool
  29. */
  30. private $_result = null;
  31. /**
  32. * 検証データ情報
  33. * @var 配列
  34. */
  35. private $_resultInfo = array();
  36. /**
  37. * コンストラクター
  38. * @param array $data 検証するデータ
  39. */
  40. public function __construct($data = null)
  41. {
  42. if ($data) {
  43. $this->_data = $data;
  44. }
  45. }
  46. /**
  47. * 検証ルールを設定します
  48. * @param string $var with検証項目キー
  49. * @parammixed $rule 検証ルール
  50. * @return void
  51. */
  52. public function setRule($var, $rule)
  53. {
  54. $this->_ruleList[$var] = $rule;
  55. }
  56. /**
  57. * 检验数据
  58. * @param array $data
  59. * </li> <li> * $data = array('nickname' => 'heno' , 'realname' => 'steven', 'age' => 25);</li> <li> * $validator = 新しい Validator($data);</li> <li> * $validator->setRule('ニックネーム', '必須');</li> <li> * $validator->setRule('実名', array('長さ) ' => array(1,4), 'required'));</li> <li> * $validator->setRule('age', array('required', 'digit'));</li> <li> * $result = $validator- >validate();</li> <li> * var_dump($validator->getResultInfo());</li> <li> *
  60. * @return bool
  61. */
  62. public function validate($ data = null)
  63. {
  64. $result = true;
  65. /* 検証ルールが設定されていない場合は、直接 true を返します */
  66. if ($this->_ruleList === null || !count($this-> ; _ruleList)) {
  67. return $result;
  68. }
  69. /* ルールが設定されている場合は、ルールを 1 つずつ確認します*/
  70. foreach ($this->_ruleList as $ruleKey => $ruleItem) {
  71. / * 検証ルールが単一ルールの場合*/
  72. if (!is_array($ruleItem)) {
  73. $ruleItem = トリム($ruleItem);
  74. if (method_exists($this, $ruleItem)) {
  75. /* 検証データ、検証結果を保存*/
  76. $tmpResult = $this->$ruleItem($ruleKey);
  77. if (!$tmpResult) {
  78. $this->_resultInfo[$ruleKey][$ruleItem] = $tmpResult;
  79. $result = false;
  80. }
  81. }
  82. continue;
  83. }
  84. /* 複数の検証ルールがあります*/
  85. foreach ($ruleItem as $ruleItemKey => $rule) {
  86. if (! is_array($rule)) {
  87. $rule = trim($rule);
  88. if (method_exists($this, $rule)) {
  89. /* データを検証し、結果セットを設定*/
  90. $tmpResult = $this-> ;$ rules($ruleKey);
  91. if (!$tmpResult) {
  92. $this->_resultInfo[$ruleKey][$rule] = $tmpResult;
  93. $result = false;
  94. }
  95. }
  96. } else {
  97. if (method_exists($this, $ruleItemKey)) {
  98. /* データを検証し、結果セットを設定*/
  99. $tmpResult = $this->$ruleItemKey($ruleKey, $rule);
  100. if (!$tmpResult) {
  101. $this->_resultInfo[$ruleKey][$ruleItemKey] = $tmpResult;
  102. $result = false;
  103. }
  104. }
  105. }
  106. }
  107. }
  108. return $result;
  109. }
  110. /**
  111. * 検証結果データを取得
  112. * @return [type] [description]
  113. */
  114. public function getResultInfo()
  115. {
  116. return $this->_resultInfo;
  117. }
  118. /**
  119. * 検証必須パラメーター
  120. * @param string $varName 検証項目
  121. * @return bool
  122. */
  123. public function required($varName)
  124. {
  125. $result = false;
  126. if (is_array($this->_data) && isset($this->_data[$varName])) {
  127. $result = true;
  128. }
  129. return $result;
  130. }
  131. /**
  132. * パラメーターの長さを確認します
  133. *
  134. * @param string $varName 項目を確認します
  135. * @param array $lengthData array($minLen, $maxLen)
  136. * @return bool
  137. */
  138. public function length($varName, $lengthData)
  139. {
  140. $result = true;
  141. /* この項目が設定されていない場合、デフォルトは検証に合格します*/
  142. if ($this->required( $varName )) {
  143. $varLen = mb_strlen($this->_data[$varName]);
  144. $minLen = $lengthData[0];
  145. $maxLen = $lengthData[1];
  146. if ($varLen < $minLen || $varLen > $maxLen) {
  147. $result = true;
  148. }
  149. }
  150. return $result;
  151. }
  152. /**
  153. * 確認メール
  154. * @param string $varName 確認項目
  155. * @return bool
  156. */
  157. public function email($varName)
  158. {
  159. $result = true;
  160. /* この項目が設定されていない場合、デフォルトは検証に合格します*/
  161. if ($this - >required($varName)) {
  162. $email = trim($this->_data[$varName]);
  163. if (preg_match('/^[-w]+?@[-w.]+? $ /', $email)) {
  164. $result = false;
  165. }
  166. }
  167. return $result;
  168. }
  169. /**
  170. * 携帯電話を確認します
  171. * @param string $varName 確認項目
  172. * @return bool
  173. */
  174. public function mobile($varName)
  175. {
  176. $result = true ;
  177. /* この項目が設定されていない場合、デフォルトは検証に合格します*/
  178. if ($this->required($varName)) {
  179. $mobile = trim($this->_data[$varName ]) ;
  180. if (!preg_match('/^1[3458]d{10}$/', $mobile)) {
  181. $result = false;
  182. }
  183. }
  184. return $result;
  185. }
  186. / **
  187. * チェックパラメータは数値です
  188. * @param string $varName check item
  189. * @return bool
  190. */
  191. public function digit($varName)
  192. {
  193. $result = false;
  194. if ($this->required($varName) && is_numeric($this->_data[$varName]) ) {
  195. $result = true;
  196. }
  197. return $result;
  198. }
  199. /**
  200. * 検証パラメータはIDカードです
  201. * @param string $varName検証項目
  202. * @return bool
  203. */
  204. パブリック関数 ID($ID)
  205. {
  206. }
  207. /**
  208. * 検証パラメータは URL です
  209. * @param string $varName 検証項目
  210. * @return bool
  211. */
  212. public function url($url)
  213. {
  214. $result = true;
  215. /* この項目が設定されていない場合、デフォルトは検証に合格します*/
  216. if ($this->required($varName)) {
  217. $ url = トリム($this->_data[$varName]);
  218. if(!preg_match('/^(http[s]?::)?w+?(.w+?)$/', $ url)) {
  219. $result = false;
  220. }
  221. }
  222. return $result;
  223. }
  224. }
  225. ?>
コードをコピー


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート