千家信息网

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

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,小编给大家分享一下php如何实现可扩展的验证类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体分析如下:这里介绍一个可扩
千家信息网最后更新 2025年01月18日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安全错误 数据库的锁怎样保障安全 专业网络技术课余学点什么 ps5港版代理服务器 静安区银联软件开发厂家报价 公务员服务器满升副科 汽车 手机 联网软件开发 机票软件开发 csgo比赛选手服务器 乐清市汇通通信网络技术服务部 怀旧服可以换几个服务器 动天网络技术有限公司 吉的堡教育软件开发 二级mysql数据库无法启动 计算机网络技术专业课考什么内容 微信公帐号网络安全排查情况报告 安徽通信软件开发服务五星服务 连云港大容量服务器供货厂 云保互联网科技公司介绍 腾讯云的服务器在哪打开 数据库架构师招聘 汇星互联网科技有限公司 学校网络安全的对策与措施 服务器虚拟化应用技术规范 1分钟网络安全短片 网络安全法规定给予主管人员 提升数字能力守护网络安全 互联网服务器网络怎么设置 软件开发软件资质 网络安全的考研专业方向 延安金融网络安全宣传 国家网络安全的支撑
0