14.5. Zend_Filter_Input

Zend_Filter_Input (Àº)´Â ¼±¾ðÇüÀÇ ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù. º¹¼öÀÇ ÇÊÅͳª Validator¸¦ °ü·ÃÁö¾î ±×°ÍÀ» µ¥ÀÌÅÍÀÇ ÁýÇÕ¿¡ Àû¿ëÇØ, ±× ÇÊÅͳª Validator·Î ó¸®ÇÑ ÈÄÀÇ °á°ú¸¦ ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù. µðÆúÆ®¿¡¼­´Â,HTML Ãâ·Â¿¡ ÀûÀýÇÑ Çü½Ä¿¡ À̽ºÄÉÀÌÇÁ µÈ °á°ú¸¦ µ¹·ÁÁÝ´Ï´Ù.

ÀÌ Å¬·¡½º´Â, ¿ÜºÎ·ÎºÎÅÍÀÇ µ¥ÀÌÅ͸¦ À§ÇÑ ¡¸¿ì¸®¡¹¶ó°í »ý°¢Çϸé ÁÁÀ» °ÍÀÔ´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀÇ ¿ÜºÎ·ÎºÎÅÍ °Ç³×¹ÞÀº µ¥ÀÌÅͶõ, ¿¹¸¦ µé¾î HTTP ¸®Äù½ºÆ®ÀÇ ÆÄ¶ó¹ÌÅͳª HTTP Çì´õ, À¥ ¼­ºñ½º, µ¥ÀÌŸº£À̽º·ÎºÎÅÍ ÀоîµéÀÎ µ¥ÀÌÅͳª ´Ù¸¥ ÆÄÀϷκÎÅÍ ÀоîµéÀÎ µ¥ÀÌÅ͵îÀÇ ÀÏÀÔ´Ï´Ù. ÀÌ·¯ÇÑ µ¥ÀÌÅÍ´Â ÀÏ´Ü ¿ì¸®¾È¿¡ °¤Èü´Ï´Ù. ±× ÀÌÈÄ, ¾îÇø®ÄÉÀ̼ÇÀ¸·ÎºÎÅÍ ÀÌ·¯ÇÑ µ¥ÀÌÅÍ¿¡ ¾×¼¼½º ÇÏ·Á¸é , °£¼ö¿¡ ´ëÇØ¼­ ¡¸±× µ¥ÀÌÅͰ¡ ¹«¾ùÀ¸·Î ÀÖ°í, ¹«½¼ ¸ñÀûÀ¸·Î »ç¿ëÇÏ´Â °ÍÀΰ¡¡¹ (À»)¸¦ ¼³¸íÇØ¾ß ÇÏ°Ô µË´Ï´Ù.°£¼ö´Â ±× ¼³¸íÀÇ ³»¿ë¿¡ µû¶ó µ¥ÀÌÅÍÀÇ Å¸´ç¼ºÀ» °ËÁõÇÕ´Ï´Ù. »óȲ¿¡ µû¸£°í, ÀûÀýÈ÷ µ¥ÀÌÅÍÀÇ À̽ºÄÉÀÌÇÁµµ ½Ç½ÃÇÕ´Ï´Ù. ÀÌ·¯ÇÑ Ã³¸®¸¦ ³¡³½ µ¥ÀÌÅÍ ¹Û¿¡, ¿ì¸®Áß¿¡¼­ ¹Û¿¡ ³ª¿Ã ¼ö ¾ø½À´Ï´Ù. ½ÉÇÃÇÏ°í Æí¸®ÇÑ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ´Â °ÍÀ¸·Î, °³¹ßÀÚ°¡ º¸´Ù ÁÁÀºÇÁ·Î±×·¡¹Ö ½À°üÀ» ¸ö¿¡ ÀÍÈú ¼ö ÀÖµµ·Ï(µíÀÌ) ÇÕ´Ï´Ù. ¶Ç, µ¥ÀÌÅÍÀÇ ÀÌ¿ë¹ý¿¡ ´ëÇØ Ç×»ó Á¶½ÉÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ) ÇÕ´Ï´Ù.

Zend_Filter_Input (Àº)´Â, ÀÌÇÏÀÇ ¼ø¼­·Î »ç¿ëÇÕ´Ï´Ù.

  1. ÇÊÅÍ ·ê ¹× °ËÁõ ·êÀ» ¼±¾ðÇÑ´Ù

  2. ÇÊÅÍ ¹× ValidatorÀÇ Ã³¸® ÀåÄ¡¸¦ ÀÛ¼ºÇÑ´Ù

  3. ÀÔ·Â µ¥ÀÌÅ͸¦ °Ç³×ÁØ´Ù

  4. °ËÁõ ³¡³­ Çʵ峪 ±× ¿ÜÀÇ °á°ú Á¤º¸¸¦ ÃëµæÇÑ´Ù

ÀÌÇÏÀÇ ¼½¼Ç¿¡¼­´Â, ÀÌ Å¬·¡½ºÀÇ »ç¿ë¹ý¿¡ ´ëÇÏ°í ¼ø¼­¸¦ ÂÑ¾Æ ¼³¸íÇØ °¥ °ÍÀÔ´Ï´Ù.

14.5.1. ÇÊÅÍ ·ê ¹× °ËÁõ ·êÀÇ ¼±¾ð

Zend_Filter_Input ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇϱâ Àü¿¡, ÇÊÅÍ ·ê°ú °ËÁõ ·êÀÇ ¹è¿­À» ¼±¾ðÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¿¬»ó ¹è¿­Àº, ·êÀÇ À̸§À» ÇÊÅͳª ValidatorÀÇ À̸§, ȤÀº ÇÊÅÍ Ã¼ÀÎÀ̳ª Validator ChainsÀÇ À̸§°ú °ü·ÃÁþ´Â °ÍÀÔ´Ï´Ù.

´ÙÀ½ÀÇ ¿¹ÀÇ ÇÊÅÍ ·êÀº,'month' Çʵ带 Zend_Filter_Digits ±×¸®°í ÇÊÅ͸µ ÇØ,'account' Çʵ带 Zend_Filter_StringTrim ±×¸®°í ÇÊÅ͸µ ÇÏ´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù. ¶Ç, °ËÁõ ·ê¿¡¼­´Â,'account' Çʵ忡´Â ¿µ¹®ÀÚ¸¸À» Çã°¡ÇÏ´Â °ÍÀ» ÁöÁ¤ÇØ ÀÖ½À´Ï´Ù.


<?php
$filters 
= array(
    
'month'   => 'Digits',
    
'account' => 'StringTrim'
);

$validators = array(
    
'account' => 'Alpha'
);

À§ÀÇ ¹è¿­ÀÇ °¢ Ű´Â, ƯÁ¤ÀÇ µ¥ÀÌÅÍ Çʵ忡 ÇÊÅ͸¦ Àû¿ëÇÏ´Â ·êÀÇ À̸§ÀÌ µË´Ï´Ù. µðÆúÆ®¿¡¼­´Â, ·êÀÇ À̸§°ú ±× ·êÀ» Àû¿ëÇÏ´Â ÀÔ·Â ÇʵåÀÇ À̸§ÀÌ µ¿ÀÏÇØÁý´Ï´Ù.

·êÀÇ Á¤ÀÇ ¹æ¹ý¿¡´Â, ¸î°³ÀÇ ¹æ½ÄÀÌ ÀÖ½À´Ï´Ù.

  • ´ÜÀÏÀÇ ½ºÄ®¶ó ¹®ÀÚ¿­.À̰ÍÀº Ŭ·¡½º¸í¿¡ ´ëÀÀÇÕ´Ï´Ù.

    
    <?php
    $validators 
    = array(
        
    'month'   => 'Digits',
    );

  • Zend_Filter_Interface ȤÀº Zend_Validate_Interface (À»)¸¦ ½ÇÀåÇÑ Å¬·¡½ºÀÇ ¸î°³ÀÇ ÀνºÅϽº.

    
    <?php
    $digits 
    = new Zend_Validate_Digits();

    $validators = array(
        
    'month'   => $digits
    );

  • ÇÊÅÍ È¤Àº ValidatorÀÇ ÃÖÀÎÀ» ¼±¾ðÇÏ´Â ¹è¿­. ÀÌ ¹è¿­ÀÇ ¿ä¼Ò°¡, Ŭ·¡½º¸í ȤÀº ÇÊÅÍ ¿ÀºêÁ§Æ®, Validator ¿ÀºêÁ§Æ®¿¡ ´ëÀÀÇÕ´Ï´Ù.°¢°¢ À§¿¡¼­ ¼³¸íÇÑ °Í°ú °°Àº Çü½ÄÀÔ´Ï´Ù. °Ô´Ù°¡ ¶Ç ÇϳªÀÇ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. Ŭ·¡½º¸íÀÇ µÚ¿¡ ±× constructor¡¡ ¡¡ ¿¡ °Ç³×ÁÖ´Â Àμö¸¦ °è¼ÓÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.

    
    <?php
    $validators 
    = array(
        
    'month'   => array(
            
    'Digits',                // ¹®ÀÚ¿­
            
    new Zend_Validate_Int(), // ¿ÀºêÁ§Æ®ÀÇ ÀνºÅϽº
            
    array('Between'112)  // ¹®ÀÚ¿­°ú constructor¡¡ ¡¡ ÀÇ Àμö
        
    )
    );

[ÁÖÀÇ] ÁÖÀÇ

¹è¿­³»¿¡¼­ constructor¡¡ ¡¡ ¿¡ÀÇ Àμö¸¦ ºÙ¿© ÇÊÅͳª Validator¸¦ ¼±¾ðÇϸé, ±× ·ê¾È¿¡ ÇÊÅͳª Validator°¡ Çϳª ¹Û¿¡ ¾ø´Â °æ¿ì¿¡¼­µµ ¹è¿­ Çü½Ä¿¡¼­ ·êÀ» ÀÛ¼ºÇØ¾ß ÇÏ°Ô µË´Ï´Ù.

·êÀÇ Å°·Î¼­ Ưº°ÇÑ "¿ÍÀϵå Ä«µå" ¹®ÀÚ '*' (À»)¸¦ »ç¿ëÇØ ÇÊÅÍ ¹è¿­À̳ª Validator ¹è¿­À» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ·ê·Î ¼±¾ðÇÑ ÇÊÅͳª Validator´Â, ¸ðµç ÀÔ·Â Çʵ忡 Àû¿ëµË´Ï´Ù. ÇÊÅÍ ¹è¿­À̳ª Validator ¹è¿­³»ÀÇ ¿£Æ®¸®ÀÇ ÁÙ ¼ø¼­¿¡´Â Àǹ̰¡ ÀÖ´Â °Í¿¡ ÁÖÀÇÇսôÙ. ·êÀº, ±×°ÍÀ» ¼±¾ðÇÑ ¼ø¼­¿¡ Àû¿ëµË´Ï´Ù.


<?php
$filters 
= array(
    
'*'     => 'StringTrim',
    
'month' => 'Digits'
);

14.5.2. ÇÊÅÍ ¹× ValidatorÀÇ Ã³¸® ÀåÄ¡ÀÇ ÀÛ¼º

ÇÊÅͳª ValidatorÀÇ ¹è¿­À» ¼±¾ðÇϸé, ±×°ÍÀ» Zend_Filter_Input ÀÇ constructor¡¡ ¡¡ ÀÇ Àμö·Î ÁöÁ¤ÇÕ´Ï´Ù. ±× °á°ú, ¸ðµç ÇÊÅ͸µ ±ÔÄ¢°ú °ËÁõ ±ÔÄ¢À» ¾Ë°í ÀÖ´Â ¿ÀºêÁ§Æ®°¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù. ÀÌ ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇϰí, ÀÔ·Â µ¥ÀÌÅ͸¦ ó¸®ÇØ °¥ °ÍÀÔ´Ï´Ù.


<?php
$input 
= new Zend_Filter_Input($filters$validators);

ÀÔ·Â µ¥ÀÌÅÍ´Â, constructor¡¡ ¡¡ ÀÇ Á¦3 Àμö·Î¼­ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ µ¥ÀÌÅÍ´Â, ¿¬»ó ¹è¿­ Çü½Ä¿¡¼­ ÁöÁ¤ÇÕ´Ï´Ù.Çʵå¸íÀÌ ¿¬»ó ¹è¿­ÀÇ Å°, °Å±â¿¡ ´ëÀÀÇÏ´Â °ªÀÌ µ¥ÀÌÅÍÀÇ °ªÀÌ µË´Ï´Ù.PHP ÇÏÁö¸¸ Ç¥ÁØ ±â´ÉÀ¸·Î¼­ Á¦°øÇϰí ÀÖ´Ù $_GET (ÀÌ)³ª $_POST ±×·¸´Ù°í ÇÏ´Â ½´ÆÛ ±Û·Î¹ú º¯¼ö°¡ ÀÌ Çü½ÄÀÌ µË´Ï´Ù. Áï, ÀÌ·¯ÇÑ ½´ÆÛ ±Û·Î¹ú º¯¼ö¸¦, Á÷Á¢ Zend_Filter_Input ¿¡ÀÇ ÀÔ·ÂÀ¸·Î¼­ °Ç³×ÁÙ ¼ö ÀÖ½À´Ï´Ù.


<?php
$data 
$_GET;

$input = new Zend_Filter_Input($filters$validators$data);

ȤÀº,setData() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ°í µ¥ÀÌÅ͸¦ °Ç³×ÁÙ ¼öµµ ÀÖ½À´Ï´Ù. ¿©±â¼­ °Ç³×ÁÖ´Â µ¥ÀÌÅÍÀÇ Çü½ÄÀº, ¹æ±ÝÀü ¼³¸íÇÑ °Í°ú °°Àº Çü½ÄÀÇ ¿¬»ó ¹è¿­ÀÌ µË´Ï´Ù.


<?php
$input 
= new Zend_Filter_Input($filters$validators);
$input->setData($newData);

setData() ¸Þ¼Òµå´Â, ±âÁ¸ÀÇ Zend_Filter_Input ¿ÀºêÁ§Æ®¿¡ ´ëÇØ¼­ ÇÊÅÍ ·êÀ̳ª °ËÁõ ·êÀº ±×´ë·Î ´Ù¸¥ ÀÔ·Â µ¥ÀÌÅ͸¦ ÀçÁ¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇϸé, °°Àº ·êÀ» º¹¼ö°¡ ´Ù¸¥ ÀÔ·Â µ¥ÀÌÅÍ¿¡ ´ëÇØ¼­ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

14.5.3. °ËÁõ ³¡³­ Çʵ峪 ±× ¿ÜÀÇ °á°ú Á¤º¸ÀÇ Ãëµæ

ÇÊÅͳª Validator¸¦ ¼±¾ðÇØ, ÀԷ ó¸® ÀåÄ¡¸¦ ÀÛ¼ºÇϸé, ´ÙÀ½Àº ±× °á°ú¸¦ ÃëµæÇÏ´Â Â÷·ÊÀÔ´Ï´Ù.Á¸ÀçÇÏÁö ¾Ê´Â Çʵå, ¹ÌÁöÀÇ Çʵå, ¹«È¿ÀÎ ÇʵåµîÀÇ Á¤º¸ ¿Ü¿¡, ÇÊÅ͸¦ Àû¿ëÇÑ ÈÄÀÇ °ªÀ» Æ÷ÇÔÇÑ ÇʵåÀÇ ³»¿ëµµ ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù.

14.5.3.1. ÀÔ·ÂÀÌ Å¸´çÇÒÁöÀÇ ¹®ÀÇ

¸ðµç ÀÔ·Â µ¥ÀÌÅͰ¡ ¹Ù¸®µ¥À̼Ǹ£¸£¸¦ Åë°úÇϸé, isValid() ¸Þ¼Òµå´Â true (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù. ¹«È¿ÀÎ Çü½ÄÀÇ ÀÔ·ÂÀ̳ª Çʼö ÇʵåÀÇ ¹ÌÀÔ·ÂÀÌ ÇϳªÀ̱⵵ Çϸé, isValid() ÇÏ false (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.


<?php
if ($input->isValid()) {
  echo 
"OKn";
}

ÀÌ ¸Þ¼Òµå¿¡´Â, ¿É¼ÇÀ¸·Î ¹®ÀÚ¿­ÀÇ Àμö¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¿¡´Â, ÇʵåÀÇ À̸§À» ÁöÁ¤ÇÕ´Ï´Ù. ÁöÁ¤ÇÑ Çʵ尡 ¹Ù¸®µ¥À̼ÇÀ» Åë°úÇØ Ãëµæ °¡´ÉÇÏ°Ô µÇ¸é, isValid('fieldName') ÇÏ true (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.


<?php
if ($input->isValid('month')) {
  echo 
"'month' ÇʵåÀÇ ³»¿ëÀº ¿Ã¹Ù¸¥ Çü½ÄÀÔ´Ï´Ùn";
}

14.5.3.2. ¹«È¿ÀÎ Çʵå, Á¸ÀçÇÏÁö ¾Ê´Â Çʵå, ¹ÌÁöÀÇ ÇʵåÀÇ Ãëµæ

  • ¹«È¿ÀÎ (invalid) Çʵå¶õ, °ËÁõÀ» Åë°úÇÏÁö ¾Ê¾Ò´ø ÇʵåÀÔ´Ï´Ù.

  • Á¸ÀçÇÏÁö ¾Ê´Â´Ù (missing) Çʵå¶õ, ÀÔ·Â µ¥ÀÌÅÍÁß¿¡´Â Á¸ÀçÇÏÁö ¾ÊÁö¸¸ ¸ÞŸÄÚ¸¸µå¿¡¼­´Â 'presence'=>'required' (¿Í)°ú °°ÀÌ Á¤Àǵǰí ÀÖ´Â ÇʵåÀÔ´Ï´Ù (¸ÞŸÄÚ¸¸µå¿¡ ´ëÇØ¼­´Â ÈÄÀÇ ¼½¼Ç (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ).

  • ¹ÌÁöÀÇ (unknown) Çʵå¶õ, ValidatorÀÇ ¹è¿­ÀÇ ·ê·Î¼­´Â ¼±¾ðµÇ¾î ÀÖÁö ¾ÊÁö¸¸ ÀÔ·Â µ¥ÀÌÅÍ¿¡´Â Á¸ÀçÇÏ´Â ÇʵåÀÔ´Ï´Ù.


<?php
if ($input->hasInvalid() || $input->hasMissing()) {
  
$messages $input->getMessages();
}

// getMessages() (Àº)´Â ´ÜÁö,getInvalid() (¿Í)°ú getMissing() (À»)¸¦ ¸ÓÁö ÇÑ °ÍÀ» µ¹·ÁÁÝ´Ï´Ù

if ($input->hasInvalid()) {
  
$invalidFields $input->getInvalid();
}

if (
$input->hasMissing()) {
  
$missingFields $input->getMissing();
}

if (
$input->hasUnknown()) {
  
$unknownFields $input->getUnknown();
}

getMessages() ¸Þ¼ÒµåÀÇ µ¹¾Æ°¡ °ªÀº ¿¬»ó ¹è¿­ÀÌ µË´Ï´Ù. ·ê¸í°ú ±× ·ê¿¡ °ü·ÃÇÏ´Â ¿¡·¯ ¸Þ¼¼ÁöÀÇ ¹è¿­À» °ü·ÃÁöÀº °ÍÀÔ´Ï´Ù. ÀÌ ¹è¿­ÀÇ À妽º´Â, ·êÀ» ¼±¾ðÇßÀ» ¶§¿¡ »ç¿ëÇÑ ·ê¸íÀÎ °Í¿¡ ÁÖÀÇÇսôÙ. À̰ÍÀº, ±× ·ê¿¡ ÀÇÇÑ Ã¼Å©¸¦ ½Ç½ÃÇÑ Çʵå¸í°ú´Â ´Ù¸¨´Ï´Ù.

getMessages() ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â ¹è¿­Àº, getInvalid() (¿Í)°ú getMissing() ÀÇ °á°ú¸¦ ¸ÓÁö ÇÑ °ÍÀÌ µË´Ï´Ù. ÀÌ·¯ÇÑ ¸Þ¼Òµå´Â, °¢°¢ ¹Ù¸®µ¥À̼ǿ¡ ½ÇÆÐÇßÀ» ¶§ÀÇ ¸Þ¼¼Áö¿Í Çʼö ÀÔ·Â Ç׸ñÀÌ ¹ÌÀÔ·ÂÀÇ °æ¿ìÀÇ ¸Þ¼¼Áö¸¦ µ¹·ÁÁÖ´Â °ÍÀÔ´Ï´Ù.

getErrors() ¸Þ¼Òµå´Â, ·êÀÇ À̸§°ú ¿¡·¯ ID ÀÇ ¹è¿­À» ´ëÀÀ½ÃŲ ¿¬»ó ¹è¿­À» µ¹·ÁÁÝ´Ï´Ù. ¿¡·¯ ID (Àº)´Â °íÁ¤ ¹®ÀÚ¿­·Î, °ËÁõ¿¡ ½ÇÆÐÇÑ ¿øÀÎÀ» ³ªÅ¸³À´Ï´Ù. ¿¡·¯ ¸Þ¼¼Áö´Â º¯°æ °¡´ÉÇÕ´Ï´Ù.ÀÚ¼¼ÇÑ °ÍÀº Ç×37.1.2. ¡¸ValidatorÀÇ ±âº»ÀûÀÎ »ç¿ë¹ý¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.

getMissing() ÇÏÁö¸¸ µ¹·ÁÁÖ´Â ¸Þ¼¼Áö´Â, ¿É¼Ç 'missingMessage' ±×¸®°í ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº,Zend_Filter_Input ÀÇ constructor¡¡ ¡¡ ¿¡ÀÇ ÀμöÀΰ¡, ȤÀº setOptions() ¸Þ¼Òµå·Î ÁöÁ¤ÇÕ´Ï´Ù.


<?php
$options 
= array(
    
'missingMessage' => "Field '%field%' is required"
);

$input = new Zend_Filter_Input($filters$validators$data$options);

// ¶Ç ÇϳªÀÇ ¹æ¹ý

$input = new Zend_Filter_Input($filters$validators$data);
$input->setOptions($options);

getUnknown() ¸Þ¼ÒµåÀÇ °á°ú´Â, Çʵå¸í°ú ÇʵåÀÇ °ªÀ» ´ëÀÀ½ÃŲ ¿¬»ó ¹è¿­ÀÌ µË´Ï´Ù. ¿©±â¼­ ¹è¿­ÀÇ Å°·Î¼­ »ç¿ëµÇ´Â °ÍÀº Çʵå¸íÀ̸ç, ·êÀÇ À̸§ÀÌ ¾Æ´Õ´Ï´Ù. ¾î¶² °ÍÀÌ ¹ÌÁöÀÇ ÇʵåÀΰ¡¸¦ ³ªÅ¸³»´Âµ¥, ·ê¸í¿¡¼­´Â »óŰ¡ ÁÁÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù.

14.5.3.3. À¯È¿ÇÑ ÇʵåÀÇ Ãëµæ

¹«È¿µµ ¾Æ´Ï¸é Á¸ÀçÇÏÁö ¾Ê´Â °Íµµ ¾Æ´Ï°í, ÇÑÆí ¹ÌÁöµµ ¾Æ´Ñ Çʵ尡, À¯È¿ÇÑ Çʵå·Î °£ÁÖÇØÁý´Ï´Ù. À¯È¿ÇÑ ÇʵåÀÇ °ªÀ» ÃëµæÇϱâ À§ÇÑ ¸ÅÁ÷ ¸Þ¼Òµå°¡ ÁغñµÇ¾î ÀÖ½À´Ï´Ù. ¶Ç, ±× À̿ܿ¡µµ getEscaped() ¹× getUnescaped() ±×·¸´Ù°í ÇÏ´Â ¸Þ¼Òµå°¡ ÀÖ½À´Ï´Ù.


<?php
$m 
$input->month;                 // À̽ºÄÉÀÌÇÁ°¡ ³¡³­ »óÅ (¸ÅÁ÷ ¸Þ¼Òµå)
$m $input->getEscaped('month');   // À̽ºÄÉÀÌÇÁ°¡ ³¡³­ »óÅÂ
$m $input->getUnescaped('month'); // À̽ºÄÉÀÌÇÁÀü

µðÆúÆ®¿¡¼­´Â, °ªÀ» ÃëµæÇÒ ¶§ Zend_Filter_HtmlEntities ¿¡ ÀÇÇÑ ÇÊÅ͸µÀ» ÇÕ´Ï´Ù. À̰ÍÀÌ µðÆúÆ®°¡ µÇ°í ÀÖ´Â ÀÌÀ¯´Â, ´ëºÎºÐÀÇ °æ¿ì´Â ÇʵåÀÇ °ªÀ» HTML ¿¡ Ãâ·ÂÇÒ °ÍÀÌ´Ù¶ó°í »ý°¢ÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. HtmlEntities ÇÊÅ͸¦ »ç¿ëÇϸé, HTML ¿¡ ¿¹±âÄ¡ ¸øÇÑ Ãâ·ÂÀÌ ³ªÅ¸³ªÁö ¾Ê°Ô ÇØ ½ÃÅ¥·¯Æ¼»óÀÇ ¹®Á¦¸¦ ¸·½À´Ï´Ù.

[ÁÖÀÇ] ÁÖÀÇ

À§¿¡¼­ º» °Íó·³, À̽ºÄÉÀÌÇÁ Çϰí ÀÖÁö ¾Ê´Â °ªµµ getUnescaped() ¸Þ¼Òµå·Î ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª, ÀÌ °ªÀ» »ç¿ëÇÒ ¶§´Â ÁÖÀǰ¡ ÇÊ¿äÇÕ´Ï´Ù. Å©·Î½º »çÀÌÆ® ½ºÅ©¸³ÆÃ °ø°Ý¿¡ ´ëÇÑ Ãë¾à¼º°ú °°Àº ½ÃÅ¥·¯Æ¼»óÀÇ ¹®Á¦¸¦ ¹ß»ý½ÃŰÁö ¾Ê°Ô ÇսôÙ.

´Ù¸¥ ÇÊÅÍ¿¡ ÀÇÇÑ À̽ºÄÉÀÌÇÁ¸¦ ½Ç½ÃÇÏ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù. ±× °æ¿ì´Â, ±×°ÍÀ» constructor¡¡ ¡¡ ÀÇ ¿É¼Ç ¹è¿­·Î ÁöÁ¤ÇÕ´Ï´Ù.


<?php
$options 
= array('escapeFilter' => 'StringTrim');
$input = new Zend_Filter_Input($filters$validators$data$options);

ȤÀº, setDefaultEscapeFilter() ¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.


<?php
$input 
= new Zend_Filter_Input($filters$validators$data);
$input->setDefaultEscapeFilter(new Zend_Filter_StringTrim());

¾î´À ÂÊÀÇ °æ¿ì¿¡ ´ëÇØ¼­µµ, À̽ºÄÉÀÌÇÁ ÇÊÅÍÀÇ ÁöÁ¤ ¹æ¹ýÀº ÇÊÅÍ Å¬·¡½ºÀÇ º£À̽º¸íÀ» ³ªÅ¸³»´Â ¹®ÀÚ¿­À̳ª ÇÊÅÍ Å¬·¡½ºÀÇ ÀνºÅϽºÀÇ ¾ðÁ¨°¡µË´Ï´Ù.À̽ºÄÉÀÌÇÁ ÇÊÅͷμ­ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº, ÇÊÅÍ Ã¼ÀÎÀÇ ÀνºÅϽºÀΰ¡ Zend_Filter Ŭ·¡½ºÀÇ ¿ÀºêÁ§Æ®ÀÔ´Ï´Ù.

Ãâ·ÂÀ» À̽ºÄÉÀÌÇÁ ÇÏ´Â ÇÊÅÍ´Â, ÀÌ¿Í °°ÀÌ ¹Ù¸®µ¥À̼ÇÀÇ Á¾·áÈÄ¿¡ Àû¿ëÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ÇÊÅÍ ·ê·Î ÁöÁ¤ÇÑ ±× ¿ÜÀÇ ÇÊÅÍ´Â, ¹Ù¸®µ¥À̼ÇÀÇ Àü¿¡ Àû¿ëµË´Ï´Ù. À̽ºÄÉÀÌÇÁ ÇÊÅ͸¦ ¹Ù¸®µ¥À̼ÇÀÇ Àü¿¡ Àû¿ëÇØ ¹ö¸®¸é, ¹Ù¸®µ¥ÀÌ¼Ç ÀÛ¾÷ÀÌ º¸´Ù º¹ÀâÇÏ°Ô µÇ¾î ¹ö·Á, À̽ºÄÉÀÌÇÁÀüÀÇ °ª°ú À̽ºÄÉÀÌÇÁ ÈÄÀÇ °ªÀ» ¾çÂÊ ¸ðµÎ °ü¸®ÇÏ´Â °ÍÀÌ ¾î·Á¿öÁý´Ï´Ù. Ãâ·ÂÀ» À̽ºÄÉÀÌÇÁ ÇÏ´Â ÇÊÅÍ´Â,$filters ¹è¿­Àº ¾Æ´Ï°í setDefaultEscapeFilter() ±×¸®°í ¼±¾ðÇÏ´Â °ÍÀ» ÃßõÇÕ´Ï´Ù.

getEscaped() ±×·¸´Ù°í ÇÏ´Â ¸Þ¼Òµå°¡ Çϳª ÀÖÀ» »Ó(¸¸Å­)À̹ǷÎ, À̽ºÄÉÀÌÇÁ¿ëÀÇ ÇÊÅÍ´Â Çϳª ¹Û¿¡ ÁöÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù (±×·¸´Ù°í´Â ÇØµµ, ±× ÇÊÅͷμ­ ÇÊÅÍ Ã¼ÀÎÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù). ÇϳªÀÇ Zend_Filter_Input ÀÇ ÀνºÅϽº·ÎºÎÅÍ º¹¼öÀÇ ÇÊÅ͸µ ¸Þ¼ÒµåÀÇ °á°ú¸¦ µ¹·ÁÁÖ°í ½ÍÀº °æ¿ì´Â, Zend_Filter_Input (À»)¸¦ °è½ÂÇÑ ¼­ºê Ŭ·¡½º¿¡¼­ »õ·Î¿î ¸Þ¼Òµå¸¦ ½ÇÀåÇØ ´ëÀÀÇսôÙ.

14.5.4. ¸ÞŸÄÚ¸¸µå¿¡ ÀÇÇÑ ÇÊÅÍ ·êÀ̳ª Validator ·êÀÇ Á¦¾î

Çʵå¿Í ÇÊÅͳª ValidatorÀÇ ´ëÀÀÀ» ¼±¾ðÇϴµ¥ ´õÇϰí, ¹è¿­À» ¼±¾ðÇÒ ¶§¿¡ "¸ÞŸÄÚ¸¸µå" (À»)¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº,Zend_Filter_Input ÀÇ °Åµ¿À» Á¦¾îÇÏ´Â ¿É¼ÇÀÔ´Ï´Ù. ¸ÞŸÄÚ¸¸µå´Â, ÇÊÅÍ ¹è¿­À̳ª Validator ¹è¿­ÀÇ °ªÀ¸·Î ÇØ¼­ ÁöÁ¤ÇÑ´Ù ¹®ÀÚ¿­ À妽ºÀÇ ¿£Æ®¸®°¡ µË´Ï´Ù.

14.5.4.1. FIELDS ¸ÞŸÄÚ¸¸µå

ÇÊÅͳª ValidatorÀÇ À̸§ÀÌ ±×°ÍÀ» Àû¿ëÇÏ´Â ÇʵåÀÇ À̸§°ú ´Ù¸¥ °æ¿ì´Â, 'fields' ¸ÞŸÄÚ¸¸µå·Î Çʵå¸íÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ ¸ÞŸÄÚ¸¸µå¸¦ ÁöÁ¤ÇÒ ¶§¿¡, ¹®ÀÚ¿­Àº ¾Æ´Ï°í Ŭ·¡½º Á¤¼ö Zend_Filter_Input::FIELDS (À»)¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.


<?php
$filters 
= array( 
    
'month' => array( 
        
'Digits',        // ¼öÄ¡ À妽ºÀÇ ÇÊÅ͸í [0] 
        
'fields' => 'mo' // ¹®ÀÚ¿­ À妽ºÀÇ Çʵå¸í ['fields'] 
    

);

À§ÀÇ ¿¹¿¡¼­´Â,'digits' ÇÊÅ͸¦ 'mo' (ÀÌ)¶ó´Â À̸§ÀÇ ÀÔ·Â Çʵ忡 Àû¿ëÇϰí ÀÖ½À´Ï´Ù. ¹®ÀÚ¿­ 'month' (Àº)´Â, ´Ü¼øÇÑ ÀÌ ÇÊÅ͸µ ·êÀÇ ´Ï¸ð´Ðũ۰¡ µË´Ï´Ù. 'fields' ¸ÞŸÄÚ¸¸µå·Î Çʵ带 ÁöÁ¤ÇßÀ» °æ¿ì´Â, À̰ÍÀº Çʵå¸íÀ¸·Î¼­´Â »ç¿ëµÇÁö ¾Ê°í, ´Ü¼øÇÑ ·ê¸íÀÌ µË´Ï´Ù.

'fields' ¸ÞŸÄÚ¸¸µåÀÇ µðÆúƮġ´Â, ÇöÀçÀÇ ·êÀÇ À妽º°¡ µË´Ï´Ù. À§ÀÇ ¿¹ÀÇ °æ¿ì´Â,'fields' ¸ÞŸÄÚ¸¸µå¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì´Â, 'month' (ÀÌ)¶ó´Â À̸§ÀÇ Çʵ忡 ÀÌ ·êÀÌ Àû¿ëµË´Ï´Ù.

'fields' ¸ÞŸÄÚ¸¸µåÀÇ ¶Ç ÇϳªÀÇ »ç¿ë¹ýÀº, º¹¼öÀÇ ÇʵåÀÇ ÀÔ·ÂÀ» ¿ä±¸ÇÏ´Â ÇÊÅͳª Validator·Î Çʵ带 ÁöÁ¤ÇÏ´Â °ÍÀÔ´Ï´Ù. 'fields' ¸ÞŸÄÚ¸¸µå¿¡ ¹è¿­À» ÁöÁ¤Çϸé, ÁöÁ¤ÇÑ ÇʵåÀÇ ¹è¿­ÀÌ ÇÊÅͳª Validator¿¡ÀÇ Àμö°¡ µË´Ï´Ù. ¿¹¸¦ µé¾î, ÆÐ½º¿öµå¸¦ µî·ÏÇÏ´Â °æ¿ì¿¡, µÎ Çʵ忡 ÀԷ½ÃÄÑ ±× °ªÀÌ ÀÏÄ¡ÇÏ´Â °ÍÀ» È®ÀÎÇÏ´Â µîÀ̶ó°í Çϴ ó¸®´Â, ÀÚÁÖ ÀÖ´Â °ÍÀÔ´Ï´Ù. ¹è¿­ÀÇ Àμö¸¦ ¹Þ¾Æ, ±×·¯ÇÑ ÀÔ·Â ÇʵåÀÇ °ªÀÌ µ¿ÀÏÇÒ ¶§¿¡ ¸¸ true (À»)¸¦ µ¹·ÁÁÖ´Â Validator¸¦ »ý°¢ÇØ º¾½Ã´Ù.


<?php
$validators 
= array(
    
'password' => array(
        
'StringEquals',
        
'fields' => array('password1''password2')
    )
);
// °¡»ó Ŭ·¡½º Zend_Validate_StringEquals ¿¡,
// µÎ Çʵå 'password1' ¹× 'password2' ÀÇ °ªÀ» Æ÷ÇÔÇÑ ¹è¿­À» °Ç³×ÁÝ´Ï´Ù

ÀÌ ·êÀÇ ¹Ù¸®µ¥À̼ǿ¡ ½ÇÆÐÇßÀ» °æ¿ì´Â, getInvalid() ÀÇ µ¹¾Æ°¡ °ªÀº ·êÀÇ Å° ('password') µË´Ï´Ù.'fields' ¸ÞŸÄÚ¸¸µåÀÇ Çʵå¸íÀº ÀÌ¿ëµÇÁö ¾Ê½À´Ï´Ù.

14.5.4.2. PRESENCE ¸ÞŸÄÚ¸¸µå

Validator ¹è¿­ÀÇ °¢ ¿£Æ®¸®¿¡¼­´Â, ¸ÞŸÄÚ¸¸µå 'presence' (À»)¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸ÞŸÄÚ¸¸µåÀÇ °ªÀÌ 'required' ÀÇ °æ¿ì´Â, ±× ÇʵåÀÇ °ªÀÌ Çʼö°¡ µË´Ï´Ù. ¹ÌÀÔ·ÂÀÇ °æ¿ì´Â ¡¸Á¸ÀçÇÏÁö ¾Ê´Â Çʵ塹·Î¼­ º¸°íµË´Ï´Ù.

ÀÌ ¸ÞŸÄÚ¸¸µå¸¦ ÁöÁ¤ÇÒ ¶§¿¡, ¹®ÀÚ¿­Àº ¾Æ´Ï°í Ŭ·¡½º Á¤¼ö Zend_Filter_Input::PRESENCE (À»)¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.


<?php
$validators 
= array(
    
'month' => array(
        
'digits',
        
'presence' => 'required'
    
)
);

ÀÌ ¸ÞŸÄÚ¸¸µåÀÇ µðÆúƮġ´Â 'optional' ÀÔ´Ï´Ù.

14.5.4.3. DEFAULT_VALUE ¸ÞŸÄÚ¸¸µå

ÀÔ·Â µ¥ÀÌÅÍ¿¡ ±× Çʵ尡 Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì¿¡, ¸¸¾à ¸ÞŸÄÚ¸¸µå 'default' ÇÏÁö¸¸ ·ê·Î ÁöÁ¤µÇ¾î ÀÖÀ¸¸é ±× ¸ÞŸÄÚ¸¸µåÀÇ °ªÀÌ ÇʵåÀÇ °ªÀÌ µË´Ï´Ù.

ÀÌ ¸ÞŸÄÚ¸¸µå¸¦ ÁöÁ¤ÇÒ ¶§¿¡, ¹®ÀÚ¿­Àº ¾Æ´Ï°í Ŭ·¡½º Á¤¼ö Zend_Filter_Input::DEFAULT_VALUE (À»)¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ µðÆúƮġ´Â, Validator¸¦ Àû¿ëÇϱâ Àü¿¡ ÇʵåÀÇ ´ëÀԵ˴ϴÙ. ¶Ç, ±× ÇʵåÀÇ µðÆúƮġ´Â ÇöÀçÀÇ ·ê¿¡¼­¸¸ Àû¿ëµË´Ï´Ù. ¸¸¾à ±× Çʵ尡 ´Ù¸¥ ·ê·ÎºÎÅÍ ÂüÁ¶µÇ°í ÀÖ¾úÀ» °æ¿ì¿¡´Â, ´Ù¸¥ ·êÀ» Æò°¡ÇÒ ¶§ ±× Çʵ忡´Â °ªÀÌ µé¾î°¡ ÀÖÁö ¾Ê°Ô µË´Ï´Ù. Áï, °³°³ÀÇ ·ê·Î ´Ù¸¥ µðÆúƮġ¸¦ ¼±¾ðÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù.


<?php
$validators 
= array(
    
'month' => array(
        
'digits',
        
'default' => '1'
    
)
);

// 'month' ÇʵåÀÇ °ªÀÌ ¾ø½À´Ï´Ù
$data = array();

$input = new Zend_Filter_Input(null$validators$data);
echo 
$input->month// 1 (À»)¸¦ Ãâ·ÂÇÕ´Ï´Ù

FIELDS ¸ÞŸÄÚ¸¸µå·Î º¹¼öÀÇ Çʵ带 ·ê¿¡ Á¤ÀÇÇϰí ÀÖ´Â °æ¿ì, DEFAULT_VALUE ¸ÞŸÄÚ¸¸µå¿¡ ¹è¿­À» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ëÀÀÇϴ ŰÀÇ ÇʵåÀÇ °ªÀÌ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì¿¡, µðÆúƮġ°¡ ÀÌ¿ëµË´Ï´Ù. FIELDS ±×¸®°í º¹¼öÀÇ Çʵ带 Á¤ÀÇÇϰí Àִµ¥ DEFAULT_VALUE ÇÏÁö¸¸ ½ºÄ®¶ó¿´´ø °æ¿ì´Â, ¹è¿­³»ÀÇ ¸ðµç Çʵ忡 ´ëÇØ¼­ ±× °ªÀÌ µðÆúƮġ·Î¼­ ÀÌ¿ëµË´Ï´Ù.

ÀÌ ¸ÞŸÄÚ¸¸µå¿¡´Â µðÆúƮġ´Â ¾ø½À´Ï´Ù.

14.5.4.4. ALLOW_EMPTY ¸ÞŸÄÚ¸¸µå

µðÆúÆ®¿¡¼­´Â, ÀÔ·Â µ¥ÀÌÅÍÁß¿¡ Çʵ尡 Á¸ÀçÇϸé, ºñ·Ï ±×°ÍÀÌ °ø¹®ÀÚ¿­ ('') À̾ú´Ù°í ÇØµµ Validator¸¦ Àû¿ëÇÕ´Ï´Ù. ±× °á°ú, °ËÁõ¿¡ ½ÇÆÐÇÏ´Â Àϵµ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¼öÄ¡ÀÎÁö ¾î¶²Áö¸¦ Á¶»çÇÏ´Â Validator´Â, °ø¹®ÀÚ¿­À» ÅëÇÏ¸é ¿¡·¯¸¦ º¸°íÇÕ´Ï´Ù. ÇÏ´ÃÀÇ ¹®ÀÚ¿­ (±æÀÌ Á¦·ÎÀÇ ¹®ÀÚ¿­) ÀÇ ¾È¿¡´Â ¹®ÀÚ°¡ Æ÷ÇÔµÇÁö ¾Ê±â ¶§¹®¿¡, ¼öÄ¡¸¦ ³ªÅ¸³»´Â ¹®ÀÚµµ Æ÷ÇÔµÇÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù.

ÇÏ´ÃÀÇ ¹®ÀÚ¿­µµ À¯È¿ÇÏ´Ù¶ó°í °£ÁÖ ½ÍÀº °æ¿ì´Â, ¸ÞŸÄÚ¸¸µå 'allowEmpty' (À»)¸¦ true (À¸)·Î ¼³Á¤ÇÕ´Ï´Ù. ±×·¯ÀÚ(¸é), ÀÔ·Â µ¥ÀÌÅͷμ­ ÇÏ´ÃÀÇ ¹®ÀÚ¿­ÀÌ °Ç³×¹Þ¾ÒÀ» °æ¿ìµµ °ËÁõÀ» Åë°úÇÕ´Ï´Ù.

ÀÌ ¸ÞŸÄÚ¸¸µå¸¦ ÁöÁ¤ÇÒ ¶§¿¡, ¹®ÀÚ¿­Àº ¾Æ´Ï°í Ŭ·¡½º Á¤¼ö Zend_Filter_Input::ALLOW_EMPTY (À»)¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.


<?php
$validators 
= array(
    
'address2' => array(
        
'Alnum',
        
'allowEmpty' => true
    
)
);

ÀÌ ¸ÞŸÄÚ¸¸µåÀÇ µðÆúƮġ´Â false ÀÔ´Ï´Ù.

¸Å¿ì µå¹® ÄÉÀ̽ºÀÔ´Ï´Ù¸¸, Validator´Â ÀÏÀý µî·ÏÇÏÁö ¾Ê°í ¸ÞŸÄÚ¸¸µå 'allowEmpty' (À»)¸¦ false (Áï, ÇÏ´ÃÀÇ °ªÀº ¹«È¿·Î °£ÁÖÇÑ´Ù) (¿Í)°ú ¼³Á¤ÇÑ °ËÁõ ·êÀ» Á¤ÀÇÇϸé, Zend_Filter_Input (Àº)´Â µðÆúÆ®ÀÇ ¿¡·¯ ¸Þ¼¼Áö¸¦ µ¹·ÁÁÝ´Ï´Ù. ÀÌ ¸Þ¼¼Áö´Â getMessages() ±×¸®°í ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼¼Áö´Â,'notEmptyMessage' ¿É¼ÇÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº,Zend_Filter_Input ÀÇ constructor¡¡ ¡¡ ¿¡ÀÇ ÀμöÀΰ¡, ȤÀº setOptions() ¸Þ¼Òµå·Î ÁöÁ¤ÇÕ´Ï´Ù.


<?php
$options 
= array(
    
'notEmptyMessage' => "'%field%' ¿¡ ¹«¾ùÀΰ¡ °ªÀ» ÀÔ·ÂÇØ ÁÖ¼¼¿ä"
);

$input = new Zend_Filter_Input($filters$validators$data$options);

// ´Ù¸¥ ¹æ¹ý

$input = new Zend_Filter_Input($filters$validators$data);
$input->setOptions($options);

14.5.4.5. BREAK_CHAIN ¸ÞŸÄÚ¸¸µå

µðÆúÆ®¿¡¼­´Â, ÇϳªÀÇ ·ê¿¡ º¹¼öÀÇ Validator°¡ µî·ÏµÇ¾î ÀÖ´Â °æ¿ì´Â ±×°ÍÀ» ¸ðµÎ Àû¿ëÇØ, ¸ðµç ¿¡·¯ ¸Þ¼¼Áö°¡ °á°úÀÇ ¸Þ¼¼Áö¿¡ Æ÷ÇÔµÇ°Ô µË´Ï´Ù.

ÇÑÆí, ¸ÞŸÄÚ¸¸µå 'breakChainOnFailure' (À»)¸¦ true (À¸)·Î Çϸé, ¾î¶² °ÍÀ̳ª ÇϳªÀÇ Validator°¡ ½ÇÆÐÇϸé, ±× ½ÃÁ¡¿¡¼­ Validator ChainsÀÌ Á¾·áÇÏ°Ô µË´Ï´Ù. ÃÖÀγ»ÀÇ ±× ÀÌÈÄÀÇ Validator¿¡ ÀÇÇÑ ÀԷ üũ´Â ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù. Áï, ÁöÀûµÈ ¿¡·¯¸¦ ¼öÁ¤Çß´Ù°í ÇØµµ, ÇÑÃþ ´õ ´Ù¸¥ ¿¡·¯°¡ ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀÖ´Â °ÍÀÔ´Ï´Ù.

ÀÌ ¸ÞŸÄÚ¸¸µå¸¦ ÁöÁ¤ÇÒ ¶§¿¡, ¹®ÀÚ¿­Àº ¾Æ´Ï°í Ŭ·¡½º Á¤¼ö Zend_Filter_Input::BREAK_CHAIN (À»)¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.


<?php
$validators 
= array(
    
'month' => array(
        
'Digits',
        new 
Zend_Validate_Between(1,12),
        new 
Zend_Validate_GreaterThan(0),
        
'breakChainOnFailure' => true
    
)
);
$input = new Zend_Filter_Input(null$validators);

ÀÌ ¸ÞŸÄÚ¸¸µåÀÇ µðÆúƮġ´Â false ÀÔ´Ï´Ù.

Validator ÃÖ À×Å© ¶ó½ºÀÌ´Ù Zend_Validate (Àº)´Â, ÃÖÀÎÀÇ ½ÇÇàÀ» Áß´ÜÇÒ ¼ö ÀÖ´Ù°í ÇÏ´Â Á¡À¸·Î Zend_Filter_Input º¸´Ù À¯¿¬ÇÕ´Ï´Ù. Validator ÃÖ À×Å© ¶ó½º¿¡¼­´Â, ÃÖÀγ»ÀÇ ValidatorÀÇ Çϳª°¡ ½ÇÆÐÇßÀ» ¶§¿¡ Áï½Ã¿¡ 󸮸¦ Á¾·á½ÃŰ´Â ¿É¼ÇÀ» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. Zend_Filter_Input ÀÇ °æ¿ì´Â, ¸ÞŸÄÚ¸¸µå 'breakChainOnFailure' ÀÇ ¼³Á¤ÀÌ ·ê³»ÀÇ ¸ðµç Validator¿¡ Àû¿ëµË´Ï´Ù. º¸´Ù À¯¿¬ÇÏ°Ô ÇÏ°í ½ÍÀº °æ¿ì´Â, Validator ChainsÀ» Àڱ⠺δãÀ¸·Î ÀÛ¼ºÇØ ±×°ÍÀ» Validator ·êÀÇ Á¤Àǽ÷ΠÁöÁ¤ÇÕ´Ï´Ù.


<?php
// breakChainOnFailure ¼Ó¼ºÀ» °³º°ÀûÀ¸·Î ¼³Á¤ÇÑ Validator ChainsÀ» ÀÛ¼ºÇÕ´Ï´Ù
$chain = new Zend_Validate();
$chain->addValidator(new Zend_Validate_Digits(), true);
$chain->addValidator(new Zend_Validate_Between(1,12), false);
$chain->addValidator(new Zend_Validate_GreaterThan(0), true);

// Á¶±Ý Àü ÀÛ¼ºÇÑ ÃÖÀÎÀ» ÀÌ¿ëÇÏ´Â Validator ·êÀ» ¼±¾ðÇÕ´Ï´Ù
$validators = array(
    
'month' => $chain
);
$input = new Zend_Filter_Input(null$validators);

14.5.4.6. MESSAGES ¸ÞŸÄÚ¸¸µå

·ê³»ÀÇ °³°³ÀÇ ValidatorÀÇ ¿¡·¯ ¸Þ¼¼Áö¸¦ ÁöÁ¤ÇÏ·Á¸é , ¸ÞŸÄÚ¸¸µå 'messages' (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.ÀÌ ¸ÞŸÄÚ¸¸µåÀÇ °ª¿¡´Â, ´Ù¾çÇÑ °ÍÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ÇϳªÀÇ ·ê¾È¿¡ º¹¼öÀÇ Validator°¡ ÀÖ´Â °æ¿ì¿¡ °¢°¢ ´Ù¸¥ ¸Þ¼¼Áö¸¦ ÁöÁ¤Çϰųª ÁöÁ¤ÇÑ Validator·Î ƯÁ¤ÀÇ ¿¡·¯ Á¶°Ç ¶§¿¡°Ô¸¸ ÁöÁ¤ÇÑ ¸Þ¼¼Áö¸¦ µ¹·ÁÁְųª¶ó°í Çß´ø °ÍÀÌ »ý°¢ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ ¸ÞŸÄÚ¸¸µå¸¦ ÁöÁ¤ÇÒ ¶§¿¡, ¹®ÀÚ¿­Àº ¾Æ´Ï°í Ŭ·¡½º Á¤¼ö Zend_Filter_Input::MESSAGES (À»)¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº, ¾î´À Validator¿¡ µðÆúÆ®ÀÇ ¿¡·¯ ¸Þ¼¼Áö¸¦ ¼³Á¤ÇÏ´Â ¿¹ÀÔ´Ï´Ù.


<?php
$validators 
= array(
    
'month' => array(
        
'digits',
        
'messages' => '´Þ·Î¼­ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â °ÍÀº ¼ýÀÚ¸¸ÀÔ´Ï´Ù'
    
)
);

¿¡·¯ ¸Þ¼¼Áö¸¦ ¼³Á¤ÇÏ°í ½ÍÀº Validator°¡ ´Ù¼ö ÀÖ´Â °æ¿ì´Â, 'messages' ¸ÞŸÄÚ¸¸µåÀÇ °ªÀ¸·Î ÇØ¼­ ¹è¿­À» ÁöÁ¤ÇÕ´Ï´Ù.

ÀÌ ¹è¿­ÀÇ °¢ ¿ä¼Ò´Â, °¢°¢ °°Àº À妽ºÀÇ Validator¿¡ Àû¿ëµË´Ï´Ù. Áï,n ¹øÂ°ÀÇ ValidatorÀÇ ¸Þ¼¼Áö¸¦ ÁöÁ¤ÇÏ·Á¸é ¹è¿­ÀÇ À妽º¿¡ n (À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù. À̰ÍÀ» »ç¿ëÇϰí, ÃÖÀγ»ÀÇ Æ¯Á¤ÀÇ Validator¿¡¸¸ ¸Þ¼¼Áö¸¦ ¼³Á¤ÇØ ±× Àܴ̿ µðÆúÆ®ÀÇ ¸Þ¼¼Áö¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.


<?php
$validators 
= array(
    
'month' => array(
        
'digits',
        new 
Zend_Validate_Between(112),
        
'messages' => array(
            
// Validator [0] (Àº)´Â µðÆúÆ®ÀÇ ¸Þ¼¼Áö¸¦ »ç¿ëÇØ,
            // Validator [1] ¸¶¼Å µ¶ÀÚÀûÀÎ ¸Þ¼¼Áö¸¦ ÁöÁ¤ÇÕ´Ï´Ù
            
=> '´Þ·Î¼­ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â °ÍÀº 1 (À¸)·ÎºÎÅÍ 12 ±îÁöÀÇ °ªÀÔ´Ï´Ù'
        
)
    )
);

ÇϳªÀÇ Validator¿¡ º¹¼öÀÇ ¿¡·¯ ¸Þ¼¼Áö°¡ Á¸ÀçÇÏ´Â °æ¿ì´Â, ¸Þ¼¼ÁöÀÇ Å°·Î ½Äº°ÇÕ´Ï´Ù. °¢ Validator Ŭ·¡½º¿¡´Â °¢°¢ ´Ù¸¥ ۰¡ Á¸ÀçÇØ, ±× ۸¦ ÀÌ¿ëÇØ °¢°¢ÀÇ Validator Ŭ·¡½º°¡ »ý¼ºÇÏ´Â ¿¡·¯ ¸Þ¼¼Áö¸¦ ½Äº°ÇÕ´Ï´Ù. Validator Ŭ·¡½º¿¡¼­´Â, ¸Þ¼¼ÁöÀÇ Å°¿¡ ´ëÀÀÇÏ´Â Á¤¼ö°¡ Á¤Àǵǰí ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ Å°¸¦ 'messages' ¸ÞŸÄÚ¸¸µå·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì, ¹®ÀÚ¿­Àº ¾Æ´Ï°í ¿¬»ó ¹è¿­ Çü½Ä¿¡¼­ °Ç³×ÁÝ´Ï´Ù.


<?php
$validators 
= array(
    
'month' => array(
        
'digits', new Zend_Validate_Between(112),
        
'messages' => array(
            
'´Þ·Î¼­ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â °ÍÀº ¼ýÀÚ¸¸ÀÔ´Ï´Ù',
            array(
                
Zend_Validate_Between::NOT_BETWEEN =>
                    
'´ÞÀÇ °ª %value% (Àº)´Â,%min% ÀÌ»ó %max% ÀÌÇÏÀÇ °ªÀÌ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù',
                
Zend_Validate_Between::NOT_BETWEEN_STRICT =>
                    
'´ÞÀÇ °ª %value% (Àº)´Â,%min% º¸´Ù Å©°í, ÇÑÆí %max% º¸´Ù ÀÛÀº °ªÀÌ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù'
            
)
        )
    )
);

°¢ Validator Ŭ·¡½º°¡ ¿¡·¯ ¸Þ¼¼Áö¸¦ º¹¼ö °¡Áö°í ÀÖÀ»Áö³ª ±×·¯ÇÑ ¸Þ¼¼ÁöÀÇ Å°, ±×¸®°í ¸Þ¼¼ÁöÀÇ ÅÛÇø´À¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â ÅäÅ« µî¿¡ ´ëÇÑ Á¤º¸¿¡ ´ëÇØ¼­´Â, °¢ Validator Ŭ·¡½ºÀÇ ¹®¼­¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.

14.5.4.7. ¿É¼ÇÀÇ »ç¿ë¿¡ ÀÇÇÑ, Àü·ê¿¡ÀÇ ¸ÞŸÄÚ¸¸µåÀÇ ¼³Á¤

¸ÞŸÄÚ¸¸µå 'allowEmpty' (ÀÌ)³ª 'breakChainOnFailure', 'presence' ÀÇ Àü·ê °øÅëÀÇ µðÆúƮġ´Â, Zend_Filter_Input ÀÇ constructor¡¡ ¡¡ ÀÇ Àμö $options ±×¸®°í ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.À̰ÍÀ» »ç¿ëÇϸé, °³º°ÀÇ ·ê¿¡ ¸ÞŸÄÚ¸¸µå¸¦ ¼³Á¤ÇÏÁö ¾Ê¾Æµµ Àü·ê °øÅëÀÇ µðÆúƮġ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.


<?php
// µðÆúÆ®·Î, ÀüÇʵ忡 °ø¹®ÀÚ¿­À» Çã°¡Çϵµ·Ï(µíÀÌ) ÇÕ´Ï´Ù
$options = array('allowEmpty' => true);

// °ø¹®ÀÚ¿­À» ±ÝÁöÇÏ°í ½ÍÀº Çʵ尡 ÀÖ´Â °æ¿ì´Â,
// °³º°ÀÇ ·ê Á¤ÀÇ·Î, ÀÌ ¼³Á¤À» µ¡¾²±âÇÒ ¼ö ÀÖ½À´Ï´Ù
$validators = array(
    
'month' => array(
        
'Digits',
        
'allowEmpty' => false
    
)
);

$input = new Zend_Filter_Input($filters$validators$data$options);

¸ÞŸÄÚ¸¸µå 'fields','messages' (¿Í)°ú 'default' ¿¡ ´ëÇØ¼­´Â, ÀÌ Å×Å©´ÐÀ» »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.

14.5.5. ÇÊÅÍ Å¬·¡½º¿¡ÀÇ À̸§ °ø°£ÀÇ Ãß°¡

µðÆúÆ®¿¡¼­´Â, ÇÊÅͳª Validator¸¦ ¹®ÀÚ¿­·Î ÁöÁ¤ÇßÀ» °æ¿ì´Â, ´ëÀÀÇϴ Ŭ·¡½º¸¦ Zend_Filter À̸§ °ø°£ ȤÀº Zend_Validate À̸§ °ø°£À¸·ÎºÎÅÍ Ã£½À´Ï´Ù. ¿¹¸¦ µé¾î, ¹®ÀÚ¿­ 'digits' ±×¸®°í ÇÊÅ͸¦ ÁöÁ¤Çϸé, Zend_Filter_Digits Ŭ·¡½º¸¦ ã°Ô µË´Ï´Ù.

µ¶ÀÚÀûÀÎ ÇÊÅÍ Å¬·¡½º³ª Validator Ŭ·¡½º¸¦ ÀÛ¼ºÇϰųª ½áµåÆÄƼÀÇ ÇÊÅͳª Validator¸¦ »ç¿ëÇϰųª ÇÏ´Â °æ¿ì´Â, ±× Ŭ·¡½ºÀÇ À̸§ °ø°£Àº Zend_Filter (ÀÌ)³ª Zend_Validate (¿Í)°ú´Â ´Ù¸£°ÚÁö¿ä. ±× °æ¿ì´Â,Zend_Filter_Input ¿¡ ´Ù¸¥ À̸§ °ø°£À» ÅëÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸§ °ø°£Àº, constructor¡¡ ¡¡ ÀÇ ¿É¼ÇÀ¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.


<?php
$options 
= array('namespace' => 'My_Namespace');
$input = new Zend_Filter_Input($filters$validators$data$options);

ȤÀº,addNamespace() ¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.


<?php
$input
->addNamespace('Other_Namespace');

// ÀÌ °á°ú, ´ÙÀ½ÀÇ ¼ø¼­·Î ã°Ô µË´Ï´Ù
// 1. My_Namespace
// 2. Other_Namespace
// 3. Zend_Filter
// 4. Zend_Validate

À̸§ °ø°£ Zend_Filter (¿Í)°ú Zend_Validate (Àº)´Â »èÁ¦ÇÒ ¼ö ¾ø½À´Ï´Ù. »õ·Î¿î À̸§ °ø°£À» Ãß°¡ÇÏ´Â °Í¸¸ÀÌ °¡´ÉÇØÁö°í ÀÖ½À´Ï´Ù. Ãß°¡ÇÑ À̸§ °ø°£À» ¸ÕÀú ã¾Æ,Zend À̸§ °ø°£À» ¸¶Áö¸·À¸·Î ã´Â´Ù°í ÇÏ´Â ¼ø¼­°¡ µË´Ï´Ù.