php教程 PHP开发 Zend Framework에서 일반적으로 사용되는 검증인에 대한 자세한 설명

Zend Framework에서 일반적으로 사용되는 검증인에 대한 자세한 설명

Jan 06, 2017 am 09:59 AM

이 문서에서는 Zend Framework의 일반적인 유효성 검사기를 예시와 함께 설명합니다. 다음과 같이 참조용으로 모든 사람과 공유하십시오.

날짜 날짜 유효성 검사기

코드:

<?php
require_once &#39;Zend/Validate/Date.php&#39;;
function c_date($date){
  $validator = new Zend_Validate_Date();
  if($validator->isValid($date)){
    echo "输入的日期格式:";
    echo $date."有效!<p>";
  }else{
    echo "输入的日期格式:";
    echo $date."无效!<p>";
  }
}
$date1 = "2008-02-15";
$date2 = "2008-02-31";
$date3 = "02-15-2008";
c_date($date1);
c_date($date2);
c_date($date3);
로그인 후 복사

결과:

입력 날짜 형식: 유효함 2008-02-15에!

입력한 날짜 형식: 2008-02-31이 잘못되었습니다!

입력한 날짜 형식: 02-15-2008이 잘못되었습니다!

댓글: 소스 코드 분석

public function isValid($value)
{
    if (!is_string($value) && !is_int($value) && !is_float($value) &&
      !is_array($value) && !($value instanceof Zend_Date)) {
      $this->_error(self::INVALID);
      return false;
    }
    $this->_setValue($value);
    if (($this->_format !== null) || ($this->_locale !== null) || is_array($value) ||
       $value instanceof Zend_Date) {
      require_once &#39;Zend/Date.php&#39;;
      if (!Zend_Date::isDate($value, $this->_format, $this->_locale)) {
        if ($this->_checkFormat($value) === false) {
          $this->_error(self::FALSEFORMAT);
        } else {
          $this->_error(self::INVALID_DATE);
        }
        return false;
      }
    } else {
      if (!preg_match(&#39;/^\d{4}-\d{2}-\d{2}$/&#39;, $value)) {
        $this->_format = &#39;yyyy-MM-dd&#39;;
        $this->_error(self::FALSEFORMAT);
        $this->_format = null;
        return false;
      }
      list($year, $month, $day) = sscanf($value, &#39;%d-%d-%d&#39;);
      if (!checkdate($month, $day, $year)) {
        $this->_error(self::INVALID_DATE);
        return false;
      }
    }
    return true;
}
로그인 후 복사

InArray 배열에 유효성 검사기가 포함됨

콘텐츠가 배열에 포함되어 있으면 True를 반환하고, 그렇지 않으면 False를 반환합니다.

코드:

<?php
require_once &#39;Zend/Validate/InArray.php&#39;;
function c_array($n){
  $temp = array("北京","上海","天津","重庆");
  $validator = new Zend_Validate_InArray($temp);
  if($validator->isValid($n)){
    echo "指定的内容:";
    echo $n.",存在于指定数组中!<p>";
  }else{
    echo "指定的内容:";
    echo $n.",不存在于指定数组中!<p>";
  }
}
$city1 = "北京";
$city2 = "重庆";
$city3 = "郑州";
c_array($city1);
c_array($city2);
c_array($city3);
로그인 후 복사

결과:

지정된 콘텐츠: 베이징, 지정된 배열에 존재합니다!

지정된 콘텐츠: 충칭이 지정된 배열에 존재합니다!

지정된 내용 : 정저우는 지정된 배열에 존재하지 않습니다!

정규식 정규 매칭 검증기

정규식을 사용하고 이 검증기를 적절하게 사용하면 거의 모든 검증 규칙을 구현할 수 있습니다.

코드:

<?php
require_once "Zend/Validate.php";
function c_rege($v){
  $pattern = array("/ab{2,}/");
  if(Zend_Validate::is($v,"Regex",$pattern)){
    echo "<font color=\"#006600\">指定的内容:";
    echo $v."<p>符合定义的正规规则!</font>";
    echo "<p>";
  }else{
    echo "<font color=\"#ff0000\">指定的内容:";
    echo $v."<p>不符合定义的正规规则!</font>";
    echo "<p>";
  }
}
$temp1 = "ab";
$temp2 = "abb";
$temp3 = "abbb";
c_rege($temp1);
c_rege($temp2);
c_rege($temp3);
로그인 후 복사

결과:

지정된 콘텐츠: ab

는 정의된 공식 규칙을 준수하지 않습니다!

지정 내용 : abb

정의된 형식 규칙을 준수합니다!

지정 내용 : abbb

정의된 형식 규칙을 준수합니다!

댓글:

public function __construct($pattern)
{
    if ($pattern instanceof Zend_Config) {
      $pattern = $pattern->toArray();
    }
    if (is_array($pattern)) {
      if (array_key_exists(&#39;pattern&#39;, $pattern)) {
        $pattern = $pattern[&#39;pattern&#39;];
      } else {
        require_once &#39;Zend/Validate/Exception.php&#39;;
        throw new Zend_Validate_Exception("Missing option &#39;pattern&#39;");
      }
    }
    $this->setPattern($pattern);
}
로그인 후 복사

생성자는 개인 속성을 초기화하고

public function isValid($value)
{
    if (!is_string($value) && !is_int($value) && !is_float($value)) {
      $this->_error(self::INVALID);
      return false;
    }
    $this->_setValue($value);
    $status = @preg_match($this->_pattern, $value);
    if (false === $status) {
      $this->_error(self::ERROROUS);
      return false;
    }
    if (!$status) {
      $this->_error(self::NOT_MATCH);
      return false;
    }
    return true;
}
로그인 후 복사

은 확인 작업을 수행합니다.

사용자 정의 유효성 검사기 작성

Zend_Validate_Interface 인터페이스를 상속하여 사용자 정의 유효성 검사기를 구현합니다.

코드 예시, 지정된 값이 3의 배수인지 확인하는 함수.

인터페이스 코드:

<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package  Zend_Validate
 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
 * @license  http://framework.zend.com/license/new-bsd   New BSD License
 * @version  $Id: Interface.php 24593 2012-01-05 20:35:02Z matthew $
 */
/**
 * @category  Zend
 * @package  Zend_Validate
 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
 * @license  http://framework.zend.com/license/new-bsd   New BSD License
 */
interface Zend_Validate_Interface
{
  /**
   * Returns true if and only if $value meets the validation requirements
   *
   * If $value fails validation, then this method returns false, and
   * getMessages() will return an array of messages that explain why the
   * validation failed.
   *
   * @param mixed $value
   * @return boolean
   * @throws Zend_Validate_Exception If validation of $value is impossible
   */
  public function isValid($value);
  /**
   * Returns an array of messages that explain why the most recent isValid()
   * call returned false. The array keys are validation failure message identifiers,
   * and the array values are the corresponding human-readable message strings.
   *
   * If isValid() was never called or if the most recent isValid() call
   * returned true, then this method returns an empty array.
   *
   * @return array
   */
  public function getMessages();
}
로그인 후 복사

두 가지 메소드를 구현하려면 하나는 isValid()이고 다른 하나는 getMessages()입니다.

구현 코드:

<?php
require_once "Zend/Validate/Interface.php";
class MyValidator implements Zend_Validate_Interface{
  protected $_messages = array();
  public function isValid($value){
    $this->_messages = array();
    $requirement = !($value%3);
    if(!$requirement){
      $this->_messages[] = "&#39;$value&#39;不能被3整除";
      return false;
    }
    return true;
  }
  public function getMessages(){
    return $this->_messages;
  }
}
function c_n_3($n){
  $validator = new MyValidator();
  if($validator->isValid($n)){
    echo "指定的数值:";
    echo $n.",是3的倍数!<p>";
  }else{
    echo "指定的数值:";
    echo $n.",不是3的倍数!<p>";
    echo "失败的消息为:<p>";
    foreach ($validator->getMessages() as $message) {
      echo "$message<p>";
    }
  }
}
$num1 = 5;
$num2 = 6;
$num3 = 8;
c_n_3($num1);
c_n_3($num2);
c_n_3($num3);
로그인 후 복사

결과:

지정값: 5, 3의 배수 아님!

실패 메시지는 다음과 같습니다.

'5'는 3으로 나눌 수 없습니다.

지정된 값: 6, 이는 3의 배수입니다!

지정값: 8, 3의 배수 아님!

실패 메시지는 다음과 같습니다.

'8'은 3으로 나눌 수 없습니다

설명:

여기서 속성 정보는 isValid()를 통해 설정됩니다. 메서드, getMessages() 메서드를 통해 오류 메시지를 가져옵니다. 오류 메시지는 foreach() 메서드를 통해 탐색되고 읽혀지는 배열입니다.

이 기사가 Zend Framework 프레임워크를 기반으로 하는 모든 사람의 PHP 프로그래밍에 도움이 되기를 바랍니다.

Zend Framework에서 흔히 사용되는 검증인에 대한 자세한 설명은 PHP 중국어 홈페이지를 참고해주세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)