首頁  >  文章  >  後端開發  >  一些簡單的php工具類

一些簡單的php工具類

WBOY
WBOY原創
2016-07-25 08:48:161093瀏覽
平時工作總結的一些常​​用工具,採用簡單的實作方式,功能較為單一,沒有複雜的依賴。

主機網址: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 $exterions = 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. 公用函數訊息($key = false)
  120. {
  121. if ($key && isset($this->messages[$key]) )
  122. return $this-> messages[$key];
  123. return $this->messages;
  124. }
  125. protected function parseRule($rule)
  126. {
  127. if (false !== strpos($rule ,'|'))
  128. {
  129. list($rulename,$args) = 爆炸('|', $rule);
  130. $args = 爆炸(':', $args);
  131. }
  132. else
  133. {
  134. $rulename = $rule;
  135. $args = array();
  136. }
  137. 傳回陣列( ucfirst($rulename),$args);
  138. }
  139. protected function getValue($attr)
  140. {
  141. if(!is_null($value = $this->data[$ attr]))
  142. return $value;
  143. }
  144. /**
  145. * 批次增加擴充規則
  146. * @param $rules array
  147. */
  148. public static function addExtension($name,Closure $rule)
  149. {
  150. static::$extensions[$name] = $$name] = $ rule;
  151. }
  152. /***/
  153. public static function addExtensions(array $rules)
  154. {
  155. foreach ($rules as $k = >; $v)
  156. {
  157. static::addExtension($k, $v);
  158. }
  159. }
  160. public function __call($method,$args)
  161. {
  162. $method = lcfirst(substr($method, 8));
  163. $args = array_merge(array($this),$args);
  164. if (isset($this),$args);
  165. if (isset($this),$args);
  166. if (isset($this),$args);
  167. if (isset($this),$args);
  168. if (isset($this),$args);
  169. if (isset( static: :$extensions[$method]))
  170. {
  171. return call_user_func_array(static::$extensions[$method], $args);
  172. }
  173. throw new Exception(' rule ' .$method.' 不退出');
  174. }
  175. 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; }
  176. {
  177. return strlen($value)
  178. $len;
  179. }
  180. 受保護函數ValidateBetween($attr,$value,$min,$max)
  181. {
  182. return $this->validateMin($attr, $value, $min) && $this->validateMax($attr, $ value, $max);
  183. }
  184. 受保護函數validateEmail($attr,$value)
  185. {
  186. $regex = '/[w!#$%&'* /= ?^_`{|}~-] (?:.[w!#$%&'* /=?^_`{|}~-] ) *@(?:[w](?:[w- ]*[w])?.) [w](?:[w-]*[w])?/i';
  187. return (bool)preg_match($regex, $value);
  188. }
  189. protected function validateNumber($attr,$value)
  190. {
  191. return is_numeric($value);
  192. }
  193. {
  194. $in_data =explode(',', $in_data);
  195. return in_array($value, $in_data) );
  196. }
  197. 受🎜> 受保護函數validateNotin($attr,$value,$in_data)
  198. {
  199. return !$this->validateIn($attr, $value, $in_data) ;
  200. }
  201. protected 函數validateEq($attr,$value,$eq)
  202. {
  203. return $value == $eq;
  204. }
  205. protected function validateConfirm($attr,$value,$value,$ 🎜> {
  206. return $this->validateEq($attr, $value, $this->getValue($confirm));
  207. }
  208. 受保護函數validateUrl($attr,$value )
  209. {
  210. $regex = '/[a-zA-z] ://[^s]*/i';
  211. return (bool)preg_match($regex, $value);
  212. }
  213. 受保護函數validateMobile($attr,$value)
  214. {
  215. return preg_match('/1(3|4| 5|8})d{9}/',$ value);
  216. }
  217. protected function validateQQ($attr,$value)
  218. {
  219. return preg_match('/d{ 5,}/', $value);
  220. }
  221. }
複製程式碼
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn