Á¦39Àå Zend_Validate

¸ñÂ÷

39.1. µµÀÔ
39.1.1. Validator¶õ?
39.1.2. ValidatorÀÇ ±âº»ÀûÀÎ »ç¿ë¹ý
39.1.3. ¸Þ¼¼ÁöÀÇ Ä¿½ºÅ͸¶ÀÌÁî
39.1.4. Á¤Àû ¸Þ¼Òµå is() ÀÇ »ç¿ë¹ý
39.2. Ç¥ÁØÀÇ Validation Classes
39.2.1. Alnum
39.2.2. Alpha
39.2.3. Barcode
39.2.4. Between
39.2.5. Ccnum
39.2.6. Date
39.2.7. Digits
39.2.8. ¸ÞÀÏ ÁÖ¼Ò
39.2.9. Float
39.2.10. GreaterThan
39.2.11. Hex
39.2.12. È£½ºÆ®¸í
39.2.13. InArray
39.2.14. Int
39.2.15. Ip
39.2.16. LessThan
39.2.17. NotEmpty
39.2.18. Regex
39.2.19. StringLength
39.3. Validator Chains
39.4. ValidatorÀÇ ¾²´Â ¹ý

39.1. µµÀÔ

Zend_Validate ÄÄÆÛ³ÍÆ®´Â, ÀϹÝÀûÀ¸·Î ÇÊ¿äÇÑ Validator¸¦ Á¦°øÇÕ´Ï´Ù. ½ÉÇÃÇÑ Validator Chains ±â´Éµµ °¡Áö°í ÀÖ¾î ÇϳªÀÇ µ¥ÀÌÅÍ¿¡ ´ëÇØ¼­ º¹¼öÀÇ Validator¸¦ ÁöÁ¤ÇÑ ¼ø¼­¿¡ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

39.1.1. Validator¶õ?

Validator´Â, ÀÔ·ÂÀÌ ¾î¶°ÇÑ ¿ä°ÇÀ» ä¿ö ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇØ °á°ú¸¦ boolean °ªÀ¸·Î µ¹·ÁÁÝ´Ï´Ù.À̰ÍÀº, ÀÔ·ÂÀÌ ¿ä°ÇÀ» ä¿ö ÀÖ´ÂÁö ¾î¶²Áö¸¦ ³ªÅ¸³À´Ï´Ù. ÀÔ·ÂÀÌ ¿ä°ÇÀ» ä¿ìÁö ¾Ê¾Ò´ø °æ¿ì, Validator´Â ±× ÀÔ·ÂÀÌ ¾î¶»°Ô ¿ä°ÇÀ» ä¿ìÁö ¾Ê¾Ò´ø °ÍÀϱ ´ëÇÑ Ãß°¡ Á¤º¸µµ Á¦°øÇÕ´Ï´Ù.

¿¹¸¦ µé¾î, ¾î´À À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­´Â ¡¸À¯Àú¸íÀº 6 ¹®ÀڷκÎÅÍ 12 ¹®ÀÚ, ÇÑÆí ¿µ¼ýÀÚ¸¸ÀÌ »ç¿ë °¡´É¡¹ ±×·¸´Ù°í ÇÏ´Â ¿ä°ÇÀÌ ÀÖ´Â °ÍÀ¸·Î ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡ ÀÔ·ÂÀÌ ±×°ÍÀ» ä¿ö ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇϱâ À§Çؼ­ Validator¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼±ÅÃÇÑ À¯Àú¸íÀÌ ¾î´ÀÂÊÀ̵ç Çϳª ȤÀº ¾çÂÊ ¸ðµÎÀÇ ¿ä°ÇÀ» ä¿ìÁö ¾ÊÀº °æ¿ì¿¡, ¾î´À ÂÊÀÇ Á¶°Ç¿¡ ¹ÝÇϰí ÀÖ¾ú´ÂÁö¸¦ ¾Ë ¼ö ÀÖÀ¸¹Ç·Î Æí¸®ÇÕ´Ï´Ù.

39.1.2. ValidatorÀÇ ±âº»ÀûÀÎ »ç¿ë¹ý

¿©±â¼­ »ý°¢ÇÑ Validator¿¡ ´ëÇÑ Á¤ÀǸ¦ ±âÃÊ·Î ÇØ¼­ Zend_Validate_Interface ÇÏÁö¸¸ ÀÛ¼ºµÇ¾ú½À´Ï´Ù.À̰ÍÀº, isValid() ¹× getMessages() ÀÇ µÎ ¸Þ¼Òµå¸¦ Á¤ÀÇÇÏ´Â °ÍÀÔ´Ï´Ù. isValid() ¸Þ¼Òµå´Â ÁöÁ¤ÇÑ °ª¿¡ ´ëÇÑ °ËÁõÀ» ½Ç½ÃÇÕ´Ï´Ù. °ªÀÌ °ËÁõ Á¶°ÇÀ» ä¿ö ÀÖ´Â °æ¿ì¿¡°Ô¸¸ true (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.

isValid() ÇÏÁö¸¸ false (À»)¸¦ µ¹·ÁÁÖ¾úÀ» °æ¿ì, getMessages() ÇÏÁö¸¸ ¸Þ¼¼ÁöÀÇ ¹è¿­À» Á¦°øÇÕ´Ï´Ù. ¿©±â¿¡´Â °ËÁõÀÌ ½ÇÆÐÇÑ ÀÌÀ¯°¡ Æ÷ÇԵ˴ϴÙ. ¹è¿­ÀÇ Å°´Â, °ËÁõ¿¡ ½ÇÆÐÇÑ ¿øÀÎÀ» ³ªÅ¸³»´Â ªÀº ¹®ÀÚ¿­ÀÌ µË´Ï´Ù. ¹è¿­ÀÇ °ªÀº, °Å±â¿¡ ´ëÀÀÇÏ´Â Àΰ£ÀÌ Àбâ À§ÇÑ ¸Þ¼¼ÁöÀÔ´Ï´Ù. Ű¿Í °ªÀº Ŭ·¡½º¿¡ ÀÇÁ¸ÇÕ´Ï´Ù. °³°³ÀÇ validation class³»¿¡¼­, °ËÁõ ½ÇÆÐ½ÃÀÇ ¸Þ¼¼Áö¿Í ±×°ÍÀ» ³ªÅ¸³»´Â ÀÏÀÇÀΠ۸¦ Á¤ÀÇÇϰí ÀÖ½À´Ï´Ù. °³°³ÀÇ Å¬·¡½º¿¡¼­´Â, °ËÁõ ½ÇÆÐÀÇ ¿øÀÎÀ» ³ªÅ¸³»´Â Á¤¼öµµ ÁغñÇØ ÀÖ½À´Ï´Ù.

[ÁÖÀÇ] ÁÖÀÇ

getMessages() ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â Á¤º¸´Â, ¹Ù·Î ¿·ÀÇ isValid() ÄÝ¿¡ °üÇÑ °Í¸¸ÀÔ´Ï´Ù. isValid() (À»)¸¦ ÄÝ Çϸé, ±×¶§±îÁö ½ÇÇàµÇ¾ú´Ù isValid() ¿¡ ÀÇÇÑ ¸Þ¼¼Áö´Â ¸ðµÎ ¼Ò°ÅµË´Ï´Ù. ¿Ö³ÄÇϸé, Åë»óÀº, ¸Åȸ ´Ù¸¥ °ª¿¡ ´ëÇØ¼­ isValid() (À»)¸¦ ÄÝ ÇÒ °ÍÀÌ´Ù¶ó°í »ý°¢ÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.

ÀÌÇÏÀÇ ¿¹¿¡¼­´Â, ÀüÀÚ¸ÞÀÏ ÁÖ¼ÒÀÇ °ËÁõ ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.


<?php
require_once 'Zend/Validate/EmailAddress.php';

$validator = new Zend_Validate_EmailAddress();

if (
$validator->isValid($email)) {
    
// email (Àº)´Â Ÿ´çÇÑ Çü½ÄÀÔ´Ï´Ù
} else {
    
// email (Àº)´Â ¹«È¿ÀÎ Çü½ÄÀÔ´Ï´Ù.ÀÌÀ¯¸¦ Ç¥½ÃÇÕ´Ï´Ù
    
foreach ($validator->getMessages() as $messageId => $message) {
        echo 
"¹Ù¸®µ¥À̼ǿ¡¶ó '$messageId': $messagen";
    }
}

39.1.3. ¸Þ¼¼ÁöÀÇ Ä¿½ºÅ͸¶ÀÌÁî

Validator Ŭ·¡½ºÀÇ setMessage() ¸Þ¼Òµå¸¦ »ç¿ëÇϸé, °ËÁõ¿¡ ½ÇÆÐÇßÀ» °æ¿ì¿¡ getMessages() ÇÏÁö¸¸ µ¹·ÁÁÖ´Â ¸Þ¼¼ÁöÀÇ ¼­½ÄÀ» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÃÖÃÊÀÇ Àμö¿¡´Â ¿¡·¯ ¸Þ¼¼Áö¸¦ ¹®ÀÚ¿­·Î ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ¸Þ¼¼Áö¿¡ ƯÁ¤ÀÇ ÅäÅ«À» Æ÷ÇÔÇϸé, Validator°¡ ±×°ÍÀ» ½ÇÁ¦ÀÇ °ª¿¡ ¿Å°Ü³õ½À´Ï´Ù. ÅäÅ« %value% (Àº)´Â ¸ðµç Validator°¡ ¼­Æ÷Æ®Çϰí ÀÖ¾î, À̰ÍÀº isValid() ¿¡ °Ç³×ÁØ °ªÀ¸·Î ¿Å°ÜÁý´Ï´Ù. ±× ¿Ü, validation class¿¡ ÀÇÇØ¼­ ¿©·¯°¡Áö ÅäÅ«À» ¼­Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î,Zend_Validate_LessThan ±×·³ %max% ±×·¸´Ù°í ÇÏ´Â ÅäÅ«À» ¼­Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù. getMessageVariables() ¸Þ¼Òµå´Â, ±× Validator°¡ ¼­Æ÷Æ®ÇÏ´Â º¯¼ö ÅäÅ«ÀÇ ¹è¿­À» µ¹·ÁÁÝ´Ï´Ù.

¿É¼ÇÀÇ 2 ¹øÂ°ÀÇ Àμö´Â, »ç¿ëÇÏ´Â °ËÁõ ¿¡·¯ ¸Þ¼¼Áö ÅÛÇø´À» ³ªÅ¸³»´Â ¹®ÀÚ¿­ÀÔ´Ï´Ù. À̰ÍÀº validation class·Î º¹¼öÀÇ ¿øÀÎÀ» Á¤ÀÇÇϰí ÀÖ´Â °æ¿ì¿¡ Æí¸®ÇÕ´Ï´Ù. ÀÌ Àμö¸¦ »ý·« Çϸé, validation class³»¿¡¼­ ÃÖÃÊ·Î ¼±¾ðµÇ°í ÀÖ´Â ¸Þ¼¼Áö ÅÛÇø´À» »ç¿ëÇÕ´Ï´Ù. ¸¹Àº validation class´Â ¿¡·¯ ¸Þ¼¼Áö¸¦ Çϳª ¹Û¿¡ °¡Áö°í ÀÖÁö ¾Ê±â ¶§¹®¿¡, ±»ÀÌ ¾î´À ¸Þ¼¼Áö¸¦ »ç¿ëÇÏ´ÂÁö¸¦ ÁöÁ¤ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.


<?php
require_once 'Zend/Validate/StringLength.php';

$validator = new Zend_Validate_StringLength(8);

$validator->setMessage(
    
'¹®ÀÚ¿­ '%value%' (Àº)´Â ³Ê¹« ª½À´Ï´Ù.ÃÖÀú %min% ¹®ÀÚ ÀÌ»ó ÇÊ¿äÇÕ´Ï´Ù',
    
Zend_Validate_StringLength::TOO_SHORT);

if (!
$validator->isValid('word')) {
    
$messages $validator->getMessages();
    echo 
current($messages);

    
// Ãâ·ÂÀº "¹®ÀÚ¿­ 'word' (Àº)´Â ³Ê¹« ª½À´Ï´Ù.ÃÖÀú 8 ¹®ÀÚ ÀÌ»ó ÇÊ¿äÇÕ´Ï´Ù" µË´Ï´Ù
}

º¹¼öÀÇ ¸Þ¼¼Áö¸¦ setMessages() ¸Þ¼Òµå·Î ¼³Á¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ±× °æ¿ìÀÇ Àμö´Â, Ű/¸Þ¼¼Áö ÀÇ Æä¾îÀÇ ¹è¿­ÀÔ´Ï´Ù.


<?php
require_once 'Zend/Validate/StringLength.php';

$validator = new Zend_Validate_StringLength(812);

$validator->setMessages( array(
    
Zend_Validate_StringLength::TOO_SHORT => '¹®ÀÚ¿­ '%value%' (Àº)´Â ³Ê¹« ª½À´Ï´Ù',
    
Zend_Validate_StringLength::TOO_LONG  => '¹®ÀÚ¿­ '%value%' (Àº)´Â ³Ê¹« ±é´Ï´Ù'
));

º¸´Ù À¯¿¬ÇÑ °ËÁõ ½ÇÆÐ º¸°í¸¦ ÇÏ°í ½ÍÀº °æ¿ì¸¦ À§Çؼ­, validation class°¡ ¼­Æ÷Æ®ÇÏ´Â ¸Þ¼¼Áö ÅäÅ«°ú °°Àº À̸§ÀÇ ÇÁ·ÓÆÛƼ¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾î´À Validator¿¡¼­µµ Ç×»ó »ç¿ë °¡´ÉÇÑ ÇÁ·ÓÆÛƼ´Â value ÀÔ´Ï´Ù. À̰ÍÀº,isValid() ÀÇ Àμö·Î¼­ °Ç³×ÁØ °ªÀ» µ¹·ÁÁÝ´Ï´Ù. ±× ¿ÜÀÇ ÇÁ·ÓÆÛƼ¿¡ ´ëÇØ¼­´Â, validation class¿¡ µû¶ó¼­ ´Ù¸¨´Ï´Ù.


<?php
require_once 'Zend/Validate/StringLength.php';

$validator = new Zend_Validate_StringLength(812);

if (!
validator->isValid('word')) {
    echo 
'À̰ÍÀº, ´Ü¾î·Î¼­ ¹«È¿ÀÔ´Ï´Ù: '
        
$validator->value
        
'.±× ±æÀ̰¡ '
        
$validator->min
        
' (À¸)·ÎºÎÅÍ '
        
$validator->max
        
" ±îÁöÀÇ »çÀ̰¡ ¾Æ´Õ´Ï´Ùn";
}

39.1.4. Á¤Àû ¸Þ¼Òµå is() ÀÇ »ç¿ë¹ý

ÁöÁ¤ÇÑ validation class¸¦ Àоîµé¿© ±× ÀνºÅϽº¸¦ ÀÛ¼ºÇÑ´Ù´Â °ÍÀÌ ±ÍÂúÀ¸¸é, ¶Ç ÇϳªÀÇ ¹æ¹ýÀ¸·Î¼­ Á¤Àû ¸Þ¼Òµå Zend_Validate::is() (À»)¸¦ ½ÇÇàÇÏ´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù.ÀÌ ¸Þ¼ÒµåÀÇ ÃÖÃÊÀÇ Àμö¿¡´Â, isValid() ¸Þ¼Òµå¿¡ °Ç³×ÁÖ´Â ÀÔ·ÂÄ¡¸¦ ÁöÁ¤ÇÕ´Ï´Ù. µÎ¹øÂ°ÀÇ Àμö´Â ¹®ÀÚ¿­·Î, validation classÀÇ º£À̽º ³×ÀÓ (Zend_Validate À̸§ °ø°£¿¡ À־ÀÇ »ó´ëÀûÀÎ À̸§) (À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù. is() ¸Þ¼Òµå´Â ÀÚµ¿ÀûÀ¸·Î Ŭ·¡½º¸¦ Àоîµé¿© ±× ÀνºÅϽº¸¦ ÀÛ¼ºÇØ, ÁöÁ¤ÇÑ ÀԷ¿¡ ´ëÇØ¼­ isValid() ¸Þ¼Òµå¸¦ Àû¿ëÇÕ´Ï´Ù.


<?php
require_once 'Zend/Validate.php';

if (
Zend_Validate::is($email'EmailAddress')) {
    
// email (Àº)´Â Ÿ´çÇÑ Çü½ÄÀÔ´Ï´Ù
}

Validator Ŭ·¡½ºÀÇ constructor¡¡ ¡¡ ¿¡ ¿É¼ÇÀ» ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ´Â °æ¿ì´Â, ±×°ÍÀ» ¹è¿­·Î °Ç³×ÁÙ ¼ö ÀÖ½À´Ï´Ù.


<?php
require_once 'Zend/Validate.php';

if (
Zend_Validate::is($value'Between', array(112))) {
    
// $value ÇÏ 1 (À¸)·ÎºÎÅÍ 12 ±îÁöÀÇ »çÀÌÀÔ´Ï´Ù
}

is() ¸Þ¼Òµå´Â boolean °ªÀ» µ¹·ÁÁÝ´Ï´Ù.À̰ÍÀº isValid() ¸Þ¼Òµå¿Í °°½À´Ï´Ù.Á¤Àû ¸Þ¼Òµå is() (À»)¸¦ »ç¿ëÇßÀ» °æ¿ì´Â, °ËÁõ ½ÇÆÐ ¸Þ¼¼ÁöÀÇ ³»¿ëÀº »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.

ÀÌ Á¤ÀûÀÎ »ç¿ë¹ýÀº, ±× ÀÚ¸®¿¡¼­ °ËÁõ¿¡´Â Æí¸®ÇÕ´Ï´Ù. ´ÜÁö, º¹¼öÀÇ ÀԷ¿¡ ´ëÇØ¼­ Validator¸¦ Àû¿ëÇÑ´Ù¸é, ÃÖÃÊÀÇ ¿¹ÀÇ ¹æ½Ä, Áï Validator ¿ÀºêÁ§Æ®ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇØ ±× isValid() ¸Þ¼Òµå¸¦ ÄÝ ÇÏ´Â ¹æ½Ä ÂÊÀÌ º¸´Ù È¿À²ÀûÀÔ´Ï´Ù.

¶Ç,Zend_Filter_Input Ŭ·¡½º¿¡¼­µµ, ƯÁ¤ÀÇ ÀÔ·Â µ¥ÀÌÅͼ¼Æ®¸¦ ó¸®ÇÒ ¶§¿¡ º¹¼öÀÇ ÇÊÅͳª Validator¸¦ Çʿ信 µû¶ó¼­ ½ÇÇà½ÃŰ´Â ±â´Éµµ Á¦°øÇϰí ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº Ç×14.5. ¡¸Zend_Filter_Input¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.