千家信息网

php如何实现可扩展的验证类

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,小编给大家分享一下php如何实现可扩展的验证类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体分析如下:这里介绍一个可扩
千家信息网最后更新 2025年11月08日php如何实现可扩展的验证类

小编给大家分享一下php如何实现可扩展的验证类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

具体分析如下:

这里介绍一个可扩展的php验证类,
类里面可以的各类验证可自行调整实现,现在为基本实现方式。
需要添加规则的话, 直接定义方法,方法名即为规则名称。具体参考使用方法。

require_once('./Validator.class.php');$data = array(  'nickname' => 'heno' ,  'realname' => 'steven',  'age' => 25,  'mobile' => '1521060426');$validator = new Validator($data);$validator->setRule('nickname', 'required');$validator->setRule('realname', array('length' => array(1,6), 'required'));$validator->setRule('age', array('required', 'digit'));$validator->setRule('mobile', array('mobile'));$result = $validator->validate();var_dump($result);var_dump($validator->getResultInfo());

Validator.class.php文件如下:

_data = $data;  } } /**  * 设置校验规则  * @param string $var 带校验项key  * @param mixed $rule 校验规则  * @return void  */ public function setRule($var, $rule) {  $this->_ruleList[$var] = $rule; } /**  * 检验数据  * @param array $data   *   * $data = array('nickname' => 'heno' , 'realname' => 'steven', 'age' => 25);  * $validator = new Validator($data);  * $validator->setRule('nickname', 'required');  * $validator->setRule('realname', array('lenght' => array(1,4), 'required'));  * $validator->setRule('age', array('required', 'digit'));  * $result = $validator->validate();  * var_dump($validator->getResultInfo());  *   * @return bool  */ public function validate($data = null) {  $result = true;  /* 如果没有设置校验规则直接返回 true */  if ($this->_ruleList === null || !count($this->_ruleList)) {   return $result;  }  /* 已经设置规则,则对规则逐条进行校验 */  foreach ($this->_ruleList as $ruleKey => $ruleItem) {   /* 如果检验规则为单条规则 */   if (!is_array($ruleItem)) {    $ruleItem = trim($ruleItem);    if (method_exists($this, $ruleItem)) {     /* 校验数据,保存校验结果 */     $tmpResult = $this->$ruleItem($ruleKey);     if (!$tmpResult) {      $this->_resultInfo[$ruleKey][$ruleItem] = $tmpResult;      $result = false;     }    }    continue;   }   /* 校验规则为多条 */   foreach ($ruleItem as $ruleItemKey => $rule) {    if (!is_array($rule)) {     $rule = trim($rule);     if (method_exists($this, $rule)) {      /* 校验数据,设置结果集 */      $tmpResult = $this->$rule($ruleKey);      if (!$tmpResult) {       $this->_resultInfo[$ruleKey][$rule] = $tmpResult;       $result = false;      }     }    } else {     if (method_exists($this, $ruleItemKey)) {      /* 校验数据,设置结果集 */      $tmpResult = $this->$ruleItemKey($ruleKey, $rule);      if (!$tmpResult) {       $this->_resultInfo[$ruleKey][$ruleItemKey] = $tmpResult;       $result = false;      }     }    }   }  }  return $result; } /**  * 获取校验结果数据  * @return [type] [description]  */ public function getResultInfo() {  return $this->_resultInfo; } /**  * 校验必填参数  * @param string $varName 校验项  * @return bool  */ public function required($varName)  {  $result = false;  if (is_array($this->_data) && isset($this->_data[$varName])) {   $result = true;  }  return $result; } /**  * 校验参数长度  *   * @param string $varName 校验项  * @param array $lengthData array($minLen, $maxLen)  * @return bool  */ 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 < $minLen || $varLen > $maxLen) {    $result = true;   }  }  return $result; } /**  * 校验邮件  * @param string $varName 校验项  * @return bool  */ public function email($varName) {  $result = true;  /* 如果该项没有设置,默认为校验通过 */  if ($this->required($varName)) {   $email = trim($this->_data[$varName]);   if (preg_match('/^[-\w]+?@[-\w.]+?$/', $email)) {    $result = false;   }  }  return $result; } /**  * 校验手机  * @param string $varName 校验项  * @return bool  */ public function mobile($varName) {  $result = true;  /* 如果该项没有设置,默认为校验通过 */  if ($this->required($varName)) {   $mobile = trim($this->_data[$varName]);   if (!preg_match('/^1[3458]\d{10}$/', $mobile)) {    $result = false;   }  }  return $result; } /**  * 校验参数为数字  * @param string $varName 校验项  * @return bool  */ public function digit($varName) {  $result = false;  if ($this->required($varName) && is_numeric($this->_data[$varName])) {   $result = true;  }  return $result; } /**  * 校验参数为身份证  * @param string $varName 校验项  * @return bool  */ public function ID($ID) { } /**  * 校验参数为URL  * @param string $varName 校验项  * @return bool  */ public function url($url) {  $result = true;  /* 如果该项没有设置,默认为校验通过 */  if ($this->required($varName)) {   $url = trim($this->_data[$varName]);   if(!preg_match('/^(http[s]?::)?\w+?(\.\w+?)$/', $url)) {    $result = false;   }  }  return $result; }}?>

以上是"php如何实现可扩展的验证类"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

规则 参数 数据 验证 结果 方法 篇文章 内容 参考 检验 不怎么 使用方法 名称 多条 大部分 手机 数字 文件 方式 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库2014ssms NTP服务器异常怎么解决 服务器计时管理软件设置 中科曙光是正宗的网络安全股吗 湖北快准车服网络技术有限公司 怎么看一个数据库收录多少文献 联想机架服务器对比 双梦是哪个服务器贴吧 中央频道教育与网络安全 数据库按产品类别分表 地形图数据库文件 网络安全防护技术视频 总显示微信连接不到服务器 amd无法连接服务器并检查更新 深圳服务器电源使用方法 web服务器常见安全威胁 四川国产化服务器什么价位 本科毕业论文传数据库吗 计算机软件开发是干嘛的 陕西电信服务器哪家好 网络安全环境敏感的授权 益盟系统软件开发 网站数据库安全技术研究论文选题 青年网络安全动画 云服务器运行Python 北京五二七网络技术公司 浮夸伴奏软件开发 cfd计算服务器2T内存 网络安全手抄报素材大学 虹口区常规网络技术服务参考价格
0