몇 가지 간단한 PHP 도구 클래스

WBOY
풀어 주다: 2016-07-25 08:48:16
원래의
1099명이 탐색했습니다.
일상 작업 요약에 일반적으로 사용되는 일부 도구는 상대적으로 단일 기능과 복잡한 종속성이 없는 간단한 구현 방법을 채택합니다.

託管網址:http://git.oschina.net/caoyong2619/php-utils.git
  1. /**
  2. * 驗證器
  3. * @author 曹勇
  4. * @example
  5. * $data = array('用戶名' => 'caoyong','密碼' => '');
  6. * $rules = array('使用者名稱' => 'require','password' => 'require');
  7. * $validator = new Validator($data,$rules);
  8. * $ is_pass = * $ is_pass = * $ is_pass = $validator->passed();
  9. * $is_fail = $validator->failed();
  10. * $message = $validator->messages();;
  11. */
  12. 類別驗證器
  13. {
  14. /**
  15. * 待驗證資料
  16. * @var array
  17. */
  18. 受保護的$data;
  19. /**
  20. * 驗證規則
  21. * @var array
  22. */
  23. 受保護的$rule;
  24. /**
  25. * 錯誤訊息
  26. * @var array
  27. */
  28. 受受保護>
  29. /**
  30. * 自訂錯誤訊息
  31. * @var array
  32. */
  33. 受受保護> 受保護受保護的$messages;
  34. /**
  35. * 擴充規則
  36. * @var array
  37. */
  38. protected $custom_messages;
  39. /**
  40. * 擴充驗證規則
  41. * @param string $name
  42. * @param Closure $rule
  43. */
  44. protected static $extions = array( );
  45. public function __construct(array $data,array $rule,array $messages = array())
  46. {
  47. $this->setData($data);
  48. this $this $this $this $this->setData($data);
  49. this $this $this ->setRule( $rule);
  50. $this->setMessages($messages);
  51. }
  52. public function setData(array $data)
  53. {
  54. $this-> data = $data;
  55. }
  56. 公用函數setRule(array $rule)
  57. {
  58. $this->rule = $rule;
  59. }
  60. 公有函數setMessages(array $messages)
  61. {
  62. $this->custom_messages = $messages;
  63. }
  64. 受保護函數validate($attr,$rule)
  65. { { > if (is_array($rule))
  66. {
  67. foreach ($rule as $v)
  68. {
  69. if(false === $this->validate($attr, $v))
  70. 中斷;
  71. }
  72. }
  73. else
  74. {
  75. list($rule,$args) = $this->parseRule($rule);
  76. $ method = 'validate'.$rule;
  77. $args = array_merge(array($attr,$this->getValue($attr)),$args);
  78. $result = call_user_func_array (array($this,$method), $args);
  79. if (false === $result)
  80. {
  81. $rule = lcfirst($rule);
  82. if ( isset($this->custom_messages[$attr]))
  83. {
  84. if (is_array($this->custom_messages[$attr]) && isset($this->custom_messages[$attr] ][$rule ]))
  85. {
  86. $message = $this->custom_messages[$attr][$rule];
  87. }
  88. else
  89. if (is_string($this- >custom_messages[$ratt ]))
  90. {
  91. $message = $this->custom_messages[$attr];
  92. }
  93. else
  94. {
  95. $message = $attr .'規則'.$rule ;
  96. }
  97. }
  98. else
  99. $message = $attr.' 中回傳失敗。規則'.$rule;
  100. $this->messages[$attr] = $message;
  101. }
  102. 回傳$result;
  103. }
  104. }
  105. public function pass()
  106. {
  107. foreach ($this->rule as $attr => $rule)
  108. {
  109. $this->validate($attr, $rule) ;
  110. }
  111. return 0 === count($this->messages);
  112. }
  113. public function failed()
  114. {
  115. return !$this- >passed();
  116. {
  117. return !$this- >passed();
  118. {
  119. return !$this- >passed();
  120. }
  121. 公用函數訊息($key = false)
  122. {
  123. if ($key && isset($this->messages[$key]) )
  124. return $this-> messages[$key];
  125. return $this->messages;
  126. }
  127. protected function parseRule($rule)
  128. {
  129. if (false !== strpos($rule ,'|'))
  130. {
  131. list($rulename,$args) = 爆炸('|', $rule);
  132. $args = 爆炸(':', $args);
  133. }
  134. else
  135. {
  136. $rulename = $rule;
  137. $args = array();
  138. }
  139. 傳回陣列( ucfirst($rulename),$args);
  140. }
  141. protected function getValue($attr)
  142. {
  143. if(!is_null($value = $this->data[$ attr]))
  144. return $value;
  145. }
  146. /**
  147. * 批次增加擴充規則
  148. * @param $rules array
  149. */
  150. public static function addExtension($name,Closure $rule)
  151. {
  152. static::$extensions[$name] = $$name] = $ rule;
  153. }
  154. /***/
  155. public static function addExtensions(array $rules)
  156. {
  157. foreach ($rules as $k = >; $v)
  158. {
  159. static::addExtension($k, $v);
  160. }
  161. }
  162. public function __call($method,$args)
  163. {
  164. $method = lcfirst(substr($method, 8));
  165. $args = array_merge(array($this),$args);
  166. if (isset($this),$args);
  167. if (isset($this),$args);
  168. if (isset($this),$args);
  169. if (isset($this),$args);
  170. if (isset($this),$args);
  171. if (isset( static: :$extensions[$method]))
  172. {
  173. return call_user_func_array(static::$extensions[$method], $args);
  174. }
  175. throw new Exception(' rule ' .$method.' 不退出');
  176. } protected function validateRequired($attr,$value) { return !empty($value); { return !empty($value);; } 受保護函數validateLength($attr,$value,$len) { return $len == $min; } 受保護函數validateMin ($attr ,$value,$len) { return strlen($value) >; $len; }
  177. 보호된 함수 verifyMax($attr,$value,$len)
  178. {
  179. return strlen($value) < $len;
  180. }
  181. 보호 함수 ValidateBetween($attr,$value,$min,$max)
  182. {
  183. return $this->validateMin($attr, $value, $min) && $this->validateMax($attr, $value, $max);
  184. }
  185. 보호된 함수 verifyEmail($attr,$value)
  186. {
  187. $regex = '/[w!#$%&'* /=?^_`{|}~-] (?:.[w!#$%&'* /=?^_`{|}~-] ) *@(?:[w](?:[w-]*[w])?.) [w](?:[w-]*[w])?/i';
  188. 반환 (bool)preg_match($regex, $value);
  189. }
  190. 보호 함수 verifyNumber($attr,$value)
  191. {
  192. return is_numeric($value);
  193. }
  194. 보호된 함수 verifyIn($attr,$value,$in_data)
  195. {
  196. $in_data =explod(',', $in_data);
  197. return in_array($value, $in_data );
  198. }
  199. 보호된 함수 verifyNotin($attr,$value,$in_data)
  200. {
  201. return !$this->validateIn($attr, $value, $in_data) ;
  202. }
  203. 보호된 함수 verifyEq($attr,$value,$eq)
  204. {
  205. return $value == $eq;
  206. }
  207. protected function verifyConfirm($attr,$value,$confirm)
  208. {
  209. return $this->validateEq($attr, $value, $this->getValue($confirm));
  210. }
  211. 보호된 함수 verifyUrl($attr,$value)
  212. {
  213. $regex = '/[a-zA-z] ://[^s]*/i';
  214. return (bool)preg_match($regex, $value);
  215. }
  216. 보호된 함수 verifyMobile($attr,$value)
  217. {
  218. return preg_match('/1(3|4| 5|8})d{9}/',$value);
  219. }
  220. 보호 함수 verifyQQ($attr,$value)
  221. {
  222. return preg_match('/d{ 5,}/', $value);
  223. }
  224. }
复代码


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿