Á¦1 Àå Zend

¸ñÂ÷

1.1. µµÀÔ
1.2. Zend::loadFile()
1.3. Zend::loadClass()
1.4. Zend::isReadable()
1.5. Zend::exception()
1.6. Zend::dump()
1.7. Zend::register($index, $newval)
1.8. Zend::registry($index = null)
1.9. Zend::initRegistry($registry = 'Zend_Registry')

1.1. µµÀÔ

Zend Ŭ·¡½º´Â,Zend Framework ÀÇ ±âÃʰ¡ µÇ´Â Ŭ·¡½ºÀÔ´Ï´Ù. ÀÌ Ã¼Á¦ÀÇ ¿øÄ¢ÀÌ´Ù DRY (Don't Repeat Yourself : °°Àº °ÍÀ» ¹Ýº¹ÇÏÁö ¸»¾Æ¶ó) ¿¡ µû¸£±â À§Çؼ­ ÀÛ¼ºµÇ¾ú½À´Ï´Ù. ÀÌ Å¬·¡½º¿¡ Æ÷ÇԵǾî ÀÖ´Â °ÍÀº Á¤ÀûÀÎ ¸Þ¼Òµå¸¸À¸·Î, Zend Framework (ÀÌ)°¡ ¸¹Àº ÄÄÆÛ³ÍÆ®°¡ ÇÊ¿ä·Î ÇÏ´Â ±â´ÉÀ» Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù.


1.2. Zend::loadFile()

Zend::loadFile() (Àº)´Â, ÀÓÀÇÀÇ PHP Äڵ带 Æ÷ÇÔÇÑ´Ù PHP ÆÄÀÏÀ» ÀоîµéÀÔ´Ï´Ù.PHP ÇÔ¼ö include() ÀÇ ·¡ÆÛ·Î, ½ÇÆÐÇßÀ» °æ¿ì¿¡´Â Zend_Exception (À»)¸¦ ½½·Î¿ì ÇÕ´Ï´Ù.


<?php

Zend
::loadFile($filename$dirs=null$once=false)

?>

Àμö $filename ¿¡´Â ÀоîµéÀÌ´Â ÆÄÀϸíÀ» ÁöÁ¤ÇÕ´Ï´Ù. ¿©±â¿¡´Â ÆÐ½º Á¤º¸¸¦ Æ÷ÇÔÇØ¼­´Â ¾ÈµË´Ï´Ù.$filename ¿¡ ´ëÇØ¼­´Â ½ÃÅ¥·¯Æ¼ üũ¸¦ ÇÕ´Ï´Ù. $filename ¿¡ Æ÷ÇÔÇÒ ¼ö ÀÖ´Â °ÍÀº ¿µ¼ýÀÚ, µ¥½¬ ("-") , ¾ð´õ ½ºÄÚ¾Æ ("_") ȤÀº ÇǸ®¿Àµå (".") »ÓÀÔ´Ï´Ù. Àμö $dirs ¿¡´Â ±×·¯ÇÑ Á¦ÇÑÀº ¾ø½À´Ï´Ù.

Àμö $dirs ¿¡´Â ÆÄÀÏÀ» ã´Â µð·ºÅ丮¸¦ ÁöÁ¤ÇÕ´Ï´Ù. NULL ÀÇ °æ¿ì´Â include_path ¾ÈÀÇ ºÁ¸¦ ´ë»óÀ¸·Î ÇÕ´Ï´Ù. ¹®ÀÚ¿­ ȤÀº ¹è¿­À» ÁöÁ¤Çϸé, ÁöÁ¤µÈ µð·ºÅ丮¸¦ ¿ì¼± ãÀº ´ÙÀ½¿¡, ±×¸®°í include_path (À»)¸¦ ã½À´Ï´Ù.

Àμö $once ¿¡´Â, ÆÄÀÏÀ» ÀоîµéÀÏ ¶§¿¡ »ç¿ëÇÑ´Ù PHP ÇÔ¼ö¸¦ include() ȤÀº include_once() ÀÇ ¾î´À ÂÊÀ¸·Î ÇÏ´ÂÁö¸¦ ³í¸®Ä¡·Î ÁöÁ¤ÇÕ´Ï´Ù.


1.3. Zend::loadClass()

Zend::loadClass($class, $dirs) (Àº)´Â, PHP ÆÄÀÏÀ» ÀоîµéÀ̰í, Ŭ·¡½º°¡ Á¸ÀçÇÒÁö¸¦ È®ÀÎÇÕ´Ï´Ù.


<?php

Zend
::loadClass('Container_Tree', array('/home/production/mylib', (/home/production/myapp')));

?>

¿ì¼± $class (À»)¸¦ ÆÄ½º °èÃþÀ¸·Î º¯È¯ÇÕ´Ï´Ù. Áï, ¾ð´õ ½ºÄھƸ¦ ÆÐ½º ´Ü¶ô ¹®ÀÚ·Î º¯È¯ÇÕ´Ï´Ù. ±× ÈÄ, ÀÌ °èÃþÀÌ $dirs ÀÇ °¢ ¿ä¼ÒÀÇ µÚ¿¡ Ãß°¡µË´Ï´Ù. $dirs ÇÏÁö¸¸ null ÀÇ °æ¿ì´Â, ±× °á°ú´Â ÇϳªÀÇ °èÃþ¸¸µË´Ï´Ù. ¿¹¸¦ µé¾î,Container_Tree ÇÏ Container/Tree.php µË´Ï´Ù. /home/production/mylib/Container/Tree.php ÇÏÁö¸¸ Á¸ÀçÇßÀ» °æ¿ì´Â, ±×°ÍÀ» ÀоîµéÀÔ´Ï´Ù. Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ´ÙÀ½¿¡ /home/production/myapp/Container/Tree.php (À»)¸¦ ã¾Æ, ¹ß°ßµÇ¾úÀ» °æ¿ì¿¡ ±×°ÍÀ» ÀоîµéÀÔ´Ï´Ù.±×·±µ¥µµ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì´Â, PHP ÀÇ ÀÎŬ·çµå ÆÐ½º·ÎºÎÅÍ Container/Tree.php (À»)¸¦ ã½À´Ï´Ù.

$dirs ¿¡ ¹®ÀÚ¿­ ȤÀº ¹è¿­À» ÁöÁ¤Çϸé, ÁöÁ¤ÇÑ ¼ø¼­¿¡ ±× µð·ºÅ丮¸¦ ã½À´Ï´Ù.±×¸®°í ÃÖÃÊ·Î ¹ß°ßµÈ ÆÄÀÏÀ» ÀоîµéÀÔ´Ï´Ù. µð·ºÅ丮 $dirs ¿¡ ÆÄÀÏÀÌ ¹ß°ßµÇÁö ¾Ê´Â °æ¿ì´Â,PHP ÀÇ include_path (À»)¸¦ ÀÌ¿ëÇØ include ¹®ÀåÀ¸·Î ÀоîµéÀÔ´Ï´Ù ( Áï include 'Tree.php') µË´Ï´Ù.

ÆÄÀÏÀÌ ¹ß°ßµÇÁö ¾Ê´Â °æ¿ì, ȤÀº ÀоîµéÀÎ ÆÄÀÏ¿¡ Ŭ·¡½º°¡ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì´Â Zend_Exception (À»)¸¦ ½½·Î¿ì ÇÕ´Ï´Ù.Àб⿡´Â Zend::loadFile() (À»)¸¦ »ç¿ëÇϹǷÎ, Ŭ·¡½º¸íÀ¸·Î¼­ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â °ÍÀº ¿µ¼ýÀÚ¿Í ÇÏÀÌÇ ('-') , ¾ð´õ ½ºÄÚ¾Æ ('_') ±×¸®°í ÇǸ®¿Àµå ('.') »ÓÀÔ´Ï´Ù.


1.4. Zend::isReadable()

ÆÄÀÏÀÌ Àоîµé¿© °¡´ÉÇÑ °æ¿ì¿¡ TRUE , ±× ÀÌ¿ÜÀÇ °æ¿ì¿¡ FALSE (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.


<?php

Zend
::isReadable($filename)

?>

Àμö $filename ¿¡´Â Á¶»çÇÏ°í ½ÍÀº ÆÄÀϸíÀ» ÁöÁ¤ÇÕ´Ï´Ù. ¿©±â¿¡´Â ÆÐ½º Á¤º¸¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.ÀÌ ¸Þ¼Òµå´Â,PHP ÀÇ ÇÔ¼ö is_readable() ÀÇ ·¡ÆÛÀÔ´Ï´Ù.PHP ÀÇ ÇÔ¼ö¿¡¼­´Â include_path (Àº)´Â °Ë»öÇÏÁö ¾Ê½À´Ï´Ù¸¸, Zend::isReadable() ÇÏ include_path µµ ´ë»óÀ¸·Î ÇÕ´Ï´Ù.


1.5. Zend::exception()

¿¹¿Ü Ŭ·¡½º¸¦ Àоîµé¿©, ±× ÀνºÅϽº¸¦ ÀÛ¼ºÇØ µ¹·ÁÁÝ´Ï´Ù.

[ÁÖÀÇ] ºñÃßõ

ÀÌ ¸Þ¼Òµå´Â Zend Framework 0.6.0 ±×¸®°í Ãß°¡µÇ¾ú½À´Ï´Ù¸¸, ±× ÈÄ, °á±¹ ÀÌÀü°ú °°ÀÌ ÀνºÅϽº ÀÛ¼ºÀ̳ª ¿¹¿ÜÀÇ ½½·Î¿ì, ijġ¸¦ ÇÏ´Â ÆíÀÌ ÁÁÀº °ÍÀÌ ¾Æ´Ò°ÍÀΰ¡ ¶ó°í ÇÏ´Â °á·Ð¿¡ À̸£·¶½À´Ï´Ù. Zend::exception() ¸Þ¼Òµå´Â Zend Framework 0.6.1 ±×¸®°í ºñÃßõÀÌ µÇ¾î, Àå·¡ÀÇ ÇÁ¸®ºäÆÇ¿¡¼­´Â »èÁ¦µÉ ¿¹Á¤ÀÔ´Ï´Ù.


<?php

Zend
::exception($class$message$code);

?>

Àμö $class ±×¸®°í, ½ÇÁ¦·Î Àоîµé¿© ÀνºÅϽº¸¦ ÀÛ¼ºÇÑ´Ù ¿¹¿Ü Ŭ·¡½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù.Ŭ·¡½º¸¦ ÀоîµéÀÏ ¶§ Ç×1.3. ¡¸Zend::loadClass() ¡¹ (À»)¸¦ »ç¿ëÇÕ´Ï´Ù. Áï, ÀоîµéÀ̴ Ŭ·¡½º´Â ÀÌ Ã¼Á¦ÀÇ ¸í¸í ±Ô¾à¿¡ µû¸¥ °Í ³ª¿ÀÁö ¾ÊÀ¸¸é ¾ÈµÇ¾î, ¶Ç PHP ÀÇ include_path ¿¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.

$message (¿Í)°ú $code (Àº)´Â ¸ðµÎ ¿É¼ÇÀ¸·Î, ¿¹¿Ü Ŭ·¡½ºÀÇ constructor¡¡ ¡¡ ¿¡ Àμö·Î¼­ °Ç³×¹Þ½À´Ï´Ù.

¼º°øÇϸé, ÀÌ ¸Þ¼Òµå´Â ¿¹¿Ü Ŭ·¡½º¸¦ Àоîµé¿©, $message (¿Í)°ú $code (À»)¸¦ »ç¿ëÇØ ±× ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù.±×¸®°í ±× ÀνºÅϽº¸¦ µ¹·ÁÁÝ´Ï´Ù. Ŭ·¡½ºÀÇ Àоîµé¿©¿¡ ½ÇÆÐÇßÀ» °æ¿ì³ª, ÀоîµéÀΠŬ·¡½º°¡ Exception (À»)¸¦ °è½ÂÇϰí ÀÖÁö ¾Ê´Â °æ¿ì´Â, ¿¹¿Ü¸¦ ½½·Î¿ì ÇÕ´Ï´Ù.


1.6. Zend::dump()

Zend::dump() (Àº)´Â, ½ÄÀÇ ³»¿ëÀ» Ç¥½ÃÇϰųª µ¹·ÁÁְųª ÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå´Â,PHP ÀÇ ÇÔ¼ö var_dump() ÀÇ ·¡ÆÛÀÔ´Ï´Ù.Ãâ·ÂÀº (X)HTML ÀÇ <pre> ű׷ΠµÑ·¯½Î¿© ¿É¼ÇÀ¸·Î ¶óº§À» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.


<?php

Zend
::dump($var$label=null$echo=true)

?>

Àμö $var ¿¡´Â, Á¤º¸¸¦ ÃëµæÇÏ°í ½ÍÀº ½ÄÀ̳ª º¯¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù.

$label (Àº)´Â,Zend::dump() ÀÇ Ãâ·Â Àü¿¡ Ãß°¡µÇ´Â ÀÓÀÇÀÇ ÅØ½ºÆ®¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ´Ù¾çÇÑ º¯¼öÀÇ ³»¿ëÀ» ÇÑ È¹¸é¿¡ Ç¥½ÃÇÏ´Â °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù.

³í¸®ÇüÀÇ $echo ±×¸®°í,Zend::dump() ÀÇ °á°ú¸¦ echo ÇÒÁö¸¦ ÁöÁ¤ÇÕ´Ï´Ù.TRUE ÀÇ °æ¿ì´Â Ãâ·ÂÀÌ echo µË´Ï´Ù.$echo ÀÇ ¼³Á¤¿¡ °ü°è¾øÀÌ, Ãâ·Â °á°ú´Â Ç×»ó ¸Þ¼ÒµåÀÇ µ¹¾Æ°¡ °ªÀÌ µË´Ï´Ù.


1.7. Zend::register($index, $newval)

Ä¡ $newval (À»)¸¦, ·¹Áö½ºÆ®¸®ÀÇ ¿ÀÇÁ¼Â $index ¿¡ µî·ÏÇÕ´Ï´Ù.

·Ê 1.1. register() / offsetSet() ÀÇ ¿¹


<?php
Zend
::register($index$value);

//  ȤÀº

$registry Zend::registry();
$registry->offsetSet($index$newval);

?>

·¹Áö½ºÆ®¸®¶õ, °ªÀÇ ½Ì±Û Åæ ÀνºÅϽº¸¦ ¾îÇø®ÄÉÀÌ¼Ç °ø°£¿¡ Á¦°øÇÏ´Â ±¸Á¶ÀÔ´Ï´Ù. °ªÀ» ·¹Áö½ºÆ®¸®¿¡ º¸Á¸Çϸé, ÇÊ¿äÇÑ ¶§¿¡ ¾ðÁ¦¶óµµ ±×°ÍÀ» ²¨³» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× ¶§, Ç×»ó µ¿ÀÏÇÑ ÀνºÅϽº°¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù.

$index ¿¡´Â, ·¹Áö½ºÆ®¸®³»ÀÇ À妽º¸¦ ÀÓÀÇÀÇ ¹®ÀÚ¿­·Î ÁöÁ¤ÇÕ´Ï´Ù. Zend::registry() ±×¸®°í °ªÀ» ÃëµæÇÒ ¶§¿¡, °°Àº À妽º¸¦ »ç¿ëÇÕ´Ï´Ù.

ÀÌ ·¹Áö½ºÆ®¸®ÀÇ »ý°¢Àº ArrayObject (¿Í)°ú °°½À´Ï´Ù.ÀÌ ¸Þ¼Òµå´Â, offsetSet() ¸Þ¼Òµå (À»)¸¦ ´ÜÁö ·¦ ÇÑ °ÍÀÔ´Ï´Ù.


1.8. Zend::registry($index = null)

·¹Áö½ºÆ®¸®³»¿¡¼­ ¿ÀÇÁ¼Â $index ¿¡ º¸Á¸µÈ °ª, ȤÀº ·¹Áö½ºÆ®¸® ÀÚ½ÅÀ» µ¹·ÁÁÝ´Ï´Ù.

·Ê 1.2. registry() / offsetGet() ÀÇ ¿¹


<?php
Zend
::registry($index=null)

//  ȤÀº

$registry Zend::registry();
$value $registry->offsetGet($index);
?>

°ªÀÌ ¿ÀÇÁ¼Â $index ¿¡ º¸Á¸µÇ°í ÀÖ´Â °æ¿ì´Â, ±×°ÍÀÌ µ¹·ÁÁÖ¾îÁý´Ï´Ù. Àμö $index ÇÏÁö¸¸ NULL ÀÇ °æ¿ì´Â, ·¹Áö½ºÆ®¸® ÀڽŠ(ArrayObject ÀÇ ¼­ºê Ŭ·¡½º) ÇÏÁö¸¸ µ¹·ÁÁÖ¾îÁý´Ï´Ù.ÀÌ ¸Þ¼Òµå´Â, ´ÜÁö offsetGet() ¸Þ¼Òµå (À»)¸¦ ·¦ ÇØ, ÇÑÃþ ´õ $index (À»)¸¦ ÁöÁ¤ÇÏÁö ¾Ê´Â °æ¿ì¿¡ ·¹Áö½ºÆ®¸®¸¦ µ¹·ÁÁÖµµ·Ï(µíÀÌ) ±â´É Ãß°¡ÇÑ °ÍÀÔ´Ï´Ù.

À妽º°¡ ·¹Áö½ºÆ®¸®¿¡ µî·ÏµÇ¾î ÀÖ´ÂÁö ¾î¶²Áö¸¦ ¹ÎøÇÏ°Ô Á¶»çÇÏ·Á¸é , Zend::isRegistered() (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.

·Ê 1.3. isRegistered() / offsetExists() ÀÇ ¿¹


<?php
Zend
::isRegistered($index=null)

//  ȤÀº

$registry Zend::registry();
echo 
$registry->offsetExists($index) ? ' Á¸ÀçÇÕ´Ï´Ù' ' Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù';
?>

¾ÆÁÖ Á¶±ÝÀÇ ¼ö°í·Î, Â÷·ÊÂ÷·Ê 󸮵µ °¡´ÉÇÕ´Ï´Ù.

·Ê 1.4. ·¹Áö½ºÆ®¸®ÀÇ Â÷·ÊÂ÷·Ê ó¸®


<?php
foreach (Zend::registry() as $index => $value) {
    echo 
"$index => $value<br />n";
}
?>

1.9. Zend::initRegistry($registry = 'Zend_Registry')

°³¹ßÀÚ°¡ ±âÁ¸ÀÇ ·¹Áö½ºÆ®¸®ÀÇ ±â´ÉÀ» È®ÀåÇÏ°í ½ÍÀº °æ¿ì¿¡, ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå¿¡ ÀÇÇØ,Zend_Registry ÀÇ ¼­ºê Ŭ·¡½º¸¦ ÀÛ¼ºÇØ, offsetGet() (ÀÌ)³ª offsetExists() ÀÇ ¾Ù¸®¾î½º(alias)·Î¼­ has() ,getval() ,setval() µîÀÇ ¸Þ¼Òµå¸¦ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±âµ¿ ÆÄÀϳ»¿¡¼­ Zend_Registry ÀÇ ¼­ºê Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇØ, ´Ù¸¥ ·¹Áö½ºÆ®¸® °ü·ÃÀÇ ¸Þ¼Òµå¸¦ »ç¿ëÇϱâ Àü¿¡ ±×°ÍÀ» initRegistry() °Ç³×ÁÝ´Ï´Ù. initRegistry() (Àº)´Â ÇÑ ¹ø¸¸ »ç¿ëÇϵµ·Ï ÇսôÙ.±×·¸°Ô ÇÏÁö ¾ÊÀ¸¸é ÃʱâÈ­ÇÑ ´ÙÀ½¿¡ ÀǵµÇÏÁö ¾Ê°í ·¹Áö½ºÆ®¸®¸¦ µ¡¾²±âÇØ ¹ö¸®°Ô µÉÁöµµ ¸ð¸¨´Ï´Ù. ¶Ç,Zend::registry() ȤÀº Zend::register() (À»)¸¦ »ç¿ëÇϸé, ¸¸¾à ¾ÆÁ÷ initRegistry() ÇÏÁö¸¸ ÄÝ µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ÀÚµ¿ÀûÀ¸·Î ±×°ÍÀÌ ÄÝ µÇ°Ôµµ ÁÖÀÇÇսôÙ.

·Ê 1.5. register() / offsetSet() ÀÇ ¿¹


<?php
class Zend_RegistryMine extends Zend_Registry
{
    public function 
getval($index)
    {
        return 
$this->offsetGet($index);
    }
}

#  ±×¸®°í, ±âµ¿ ÆÄÀÏ Áß(¾È)¿¡¼­,

$ini_array parse_ini_file('your_stuff.ini'); //  À̰ÍÀº ´Ü¼øÇÑ ¿É¼ÇÀÔ´Ï´Ù
$registry = new Zend_RegistryMine($ini_array);
Zend::initRegistry($registry);

#  À̰ÍÀ¸·Î, Åë»óÀÇ Zend::registry() ,Zend::register()  ¹× Zend::isRegistered()  (Àº)´Â ±â´ë ´ë·Î µ¿ÀÛÇÕ´Ï´Ù
?>

Á¤¼ö ArrayObject::ARRAY_AS_PROPS (À»)¸¦ constructor¡¡ À¸·Î ÁöÁ¤Çϸé, °ª¿¡ÀÇ ¾×¼¼½º ¹æ¹ýÀ¸·Î¼­ $registry[$indexName] »Ó¸¸ÀÌ ¾Æ´Ï°í $registry->$indexName µµ »ç¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ±×·¯³ª,Zend_Registry (À»)¸¦ °è½ÂÇØ ÇÁ¶óÀ̺ø º¯¼ö¸¦ Ãß°¡ÇßÀ» °æ¿ì µîÀº, À̸§ÀÇ Ãæµ¹¿¡ ÁÖÀǰ¡ ÇÊ¿äÇÕ´Ï´Ù.

·Ê 1.6. °ª¿¡ÀÇ ¾×¼¼½º ½Ã¿¡, ¹è¿­ ¾×¼¼½º ±â¹ýÀº ¾Æ´Ï°í °´Ã¼ ÁöÇâ ¹æ½ÄÀ» »ç¿ëÇÑ´Ù


<?php
$registry 
= new Zend_Registry(array(), ArrayObject::ARRAY_AS_PROPS); 
Zend::initRegistry($registry);
?>