国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison php教程 PHP開發(fā) Explication détaillée des validateurs couramment utilisés dans Zend Framework

Explication détaillée des validateurs couramment utilisés dans Zend Framework

Jan 06, 2017 am 09:59 AM

Cet article décrit les validateurs courants dans Zend Framework avec des exemples. Partagez-le avec tout le monde pour votre référence, comme suit?:

Validateur de date

Code?:

<?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."無(wú)效!<p>";
  }
}
$date1 = "2008-02-15";
$date2 = "2008-02-31";
$date3 = "02-15-2008";
c_date($date1);
c_date($date2);
c_date($date3);

Résultat?:

Format de date d'entrée?: Valide le 15/02/2008?!

Le format de date saisi : 2008-02-31 n'est pas valide !

Le format de date saisi : 15-02-2008 n'est pas valide !

Commentaires?: Analyse du code source

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;
}

Le tableau InArray contient un validateur

Si le contenu est inclus dans le tableau, il renverra True, sinon il renverra False.

Code?:

<?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 "指定的內(nèi)容:";
    echo $n.",存在于指定數(shù)組中!<p>";
  }else{
    echo "指定的內(nèi)容:";
    echo $n.",不存在于指定數(shù)組中!<p>";
  }
}
$city1 = "北京";
$city2 = "重慶";
$city3 = "鄭州";
c_array($city1);
c_array($city2);
c_array($city3);

Résultat?:

Contenu spécifié?: Pékin, existe dans le tableau spécifié?!

Le contenu spécifié?: Chongqing, existe dans le tableau spécifié?!

Le contenu spécifié?: Zhengzhou n'existe pas dans le tableau spécifié?!

Validateur de correspondance régulière Regex

En utilisant des expressions régulières et en utilisant ce validateur de manière rationnelle, presque toutes les règles de vérification peuvent être implémentées.

Code :

<?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\">指定的內(nèi)容:";
    echo $v."<p>符合定義的正規(guī)規(guī)則!</font>";
    echo "<p>";
  }else{
    echo "<font color=\"#ff0000\">指定的內(nèi)容:";
    echo $v."<p>不符合定義的正規(guī)規(guī)則!</font>";
    echo "<p>";
  }
}
$temp1 = "ab";
$temp2 = "abb";
$temp3 = "abbb";
c_rege($temp1);
c_rege($temp2);
c_rege($temp3);

Résultat :

Contenu spécifié : ab

ne respecte pas les règles formelles définies !

Contenu spécifié?: abb

Conforme aux règles formelles définies?!

Contenu spécifié : abbb

Conforme aux règles formelles définies !

Commentaires?:

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);
}

Le constructeur initialise les propriétés privées et

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;
}

effectue un travail de vérification.

écrire un validateur personnalisé

Hériter de l'interface Zend_Validate_Interface pour implémenter un validateur défini par l'utilisateur.

Exemple de code, fonction pour déterminer si la valeur spécifiée est un multiple de 3.

Code d'interface?:

<?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();
}

Pour implémenter deux des méthodes, l'une est isValid() et l'autre est getMessages()

Code d'implémentation?:

<?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 "指定的數(shù)值:";
    echo $n.",是3的倍數(shù)!<p>";
  }else{
    echo "指定的數(shù)值:";
    echo $n.",不是3的倍數(shù)!<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);

Résultat?:

Valeur spécifiée?: 5, pas un multiple de 3?!

Le message d'échec est :

'5' n'est pas divisible par 3

La valeur spécifiée : 6, qui est un multiple de 3 !

Valeur spécifiée?: 8, pas un multiple de 3?!

Le message d'échec est?:

'8' n'est pas divisible par 3

Commentaires?:

Ici, les informations d'attribut sont définies via isValid() méthode, via la méthode getMessages() pour obtenir des messages d’erreur. Le message d'erreur est un tableau qui est parcouru et lu via la méthode foreach().

J'espère que cet article sera utile à la programmation PHP de chacun basée sur le framework Zend Framework.

Pour des explications plus détaillées sur les validateurs couramment utilisés dans Zend Framework, veuillez faire attention au site Web PHP chinois?!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276