¸ñÂ÷
Zend Ŭ·¡½º´Â,Zend Framework ÀÇ ±âÃʰ¡ µÇ´Â Ŭ·¡½ºÀÔ´Ï´Ù. ÀÌ Ã¼Á¦ÀÇ ¿øÄ¢ÀÌ´Ù DRY (Don't Repeat Yourself : °°Àº °ÍÀ» ¹Ýº¹ÇÏÁö ¸»¾Æ¶ó) ¿¡ µû¸£±â À§Çؼ ÀÛ¼ºµÇ¾ú½À´Ï´Ù. ÀÌ Å¬·¡½º¿¡ Æ÷ÇԵǾî ÀÖ´Â °ÍÀº Á¤ÀûÀÎ ¸Þ¼Òµå¸¸À¸·Î, Zend Framework (ÀÌ)°¡ ¸¹Àº ÄÄÆÛ³ÍÆ®°¡ ÇÊ¿ä·Î ÇÏ´Â ±â´ÉÀ» Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù.
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()
ÀÇ
¾î´À ÂÊÀ¸·Î ÇÏ´ÂÁö¸¦ ³í¸®Ä¡·Î ÁöÁ¤ÇÕ´Ï´Ù.
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()
(À»)¸¦ »ç¿ëÇϹǷÎ, Ŭ·¡½º¸íÀ¸·Î¼
ÁöÁ¤ÇÒ ¼ö ÀÖ´Â °ÍÀº ¿µ¼ýÀÚ¿Í ÇÏÀÌÇ ('-') , ¾ð´õ ½ºÄÚ¾Æ ('_') ±×¸®°í ÇǸ®¿Àµå ('.') »ÓÀÔ´Ï´Ù.
ÆÄÀÏÀÌ Àоîµé¿© °¡´ÉÇÑ °æ¿ì¿¡ TRUE
, ±× ÀÌ¿ÜÀÇ °æ¿ì¿¡ FALSE (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.
<?php
Zend::isReadable($filename)
?>
Àμö $filename
¿¡´Â Á¶»çÇÏ°í ½ÍÀº ÆÄÀϸíÀ» ÁöÁ¤ÇÕ´Ï´Ù. ¿©±â¿¡´Â ÆÐ½º Á¤º¸¸¦
Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.ÀÌ ¸Þ¼Òµå´Â,PHP ÀÇ ÇÔ¼ö is_readable()
ÀÇ
·¡ÆÛÀÔ´Ï´Ù.PHP ÀÇ ÇÔ¼ö¿¡¼´Â include_path
(Àº)´Â °Ë»öÇÏÁö ¾Ê½À´Ï´Ù¸¸, Zend::isReadable()
ÇÏ include_path
µµ
´ë»óÀ¸·Î ÇÕ´Ï´Ù.
¿¹¿Ü Ŭ·¡½º¸¦ Àоîµé¿©, ±× ÀνºÅϽº¸¦ ÀÛ¼ºÇØ µ¹·ÁÁÝ´Ï´Ù.
![]() |
ºñÃßõ |
---|---|
ÀÌ ¸Þ¼Òµå´Â Zend Framework 0.6.0 ±×¸®°í Ãß°¡µÇ¾ú½À´Ï´Ù¸¸, ±× ÈÄ, °á±¹ ÀÌÀü°ú °°ÀÌ ÀνºÅϽº ÀÛ¼ºÀ̳ª ¿¹¿ÜÀÇ
½½·Î¿ì, ijġ¸¦ ÇÏ´Â ÆíÀÌ ÁÁÀº °ÍÀÌ ¾Æ´Ò°ÍÀΰ¡ ¶ó°í ÇÏ´Â °á·Ð¿¡ À̸£·¶½À´Ï´Ù. |
<?php
Zend::exception($class, $message, $code);
?>
Àμö $class
±×¸®°í, ½ÇÁ¦·Î Àоîµé¿© ÀνºÅϽº¸¦ ÀÛ¼ºÇÑ´Ù ¿¹¿Ü Ŭ·¡½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù.Ŭ·¡½º¸¦
ÀоîµéÀÏ ¶§ Ç×1.3.
¡¸Zend::loadClass() ¡¹ (À»)¸¦ »ç¿ëÇÕ´Ï´Ù. Áï, ÀоîµéÀ̴ Ŭ·¡½º´Â ÀÌ Ã¼Á¦ÀÇ ¸í¸í ±Ô¾à¿¡ µû¸¥ °Í ³ª¿ÀÁö ¾ÊÀ¸¸é
¾ÈµÇ¾î, ¶Ç PHP ÀÇ include_path
¿¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
$message
(¿Í)°ú $code
(Àº)´Â
¸ðµÎ ¿É¼ÇÀ¸·Î, ¿¹¿Ü Ŭ·¡½ºÀÇ constructor¡¡ ¡¡ ¿¡ Àμö·Î¼ °Ç³×¹Þ½À´Ï´Ù.
¼º°øÇϸé, ÀÌ ¸Þ¼Òµå´Â ¿¹¿Ü Ŭ·¡½º¸¦ Àоîµé¿©, $message
(¿Í)°ú $code
(À»)¸¦
»ç¿ëÇØ ±× ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù.±×¸®°í ±× ÀνºÅϽº¸¦ µ¹·ÁÁÝ´Ï´Ù. Ŭ·¡½ºÀÇ Àоîµé¿©¿¡ ½ÇÆÐÇßÀ» °æ¿ì³ª, ÀоîµéÀΠŬ·¡½º°¡ Exception
(À»)¸¦
°è½ÂÇϰí ÀÖÁö ¾Ê´Â °æ¿ì´Â, ¿¹¿Ü¸¦ ½½·Î¿ì ÇÕ´Ï´Ù.
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
ÀÇ
¼³Á¤¿¡ °ü°è¾øÀÌ, Ãâ·Â °á°ú´Â Ç×»ó ¸Þ¼ÒµåÀÇ µ¹¾Æ°¡ °ªÀÌ µË´Ï´Ù.
Ä¡ $newval (À»)¸¦, ·¹Áö½ºÆ®¸®ÀÇ ¿ÀÇÁ¼Â $index ¿¡ µî·ÏÇÕ´Ï´Ù.
·Ê 1.1. register() / offsetSet() ÀÇ ¿¹
<?php
Zend::register($index, $value);
//
ȤÀº
$registry = Zend::registry();
$registry->offsetSet($index, $newval);
?>
·¹Áö½ºÆ®¸®¶õ, °ªÀÇ ½Ì±Û Åæ ÀνºÅϽº¸¦ ¾îÇø®ÄÉÀÌ¼Ç °ø°£¿¡ Á¦°øÇÏ´Â ±¸Á¶ÀÔ´Ï´Ù. °ªÀ» ·¹Áö½ºÆ®¸®¿¡ º¸Á¸Çϸé, ÇÊ¿äÇÑ ¶§¿¡ ¾ðÁ¦¶óµµ ±×°ÍÀ» ²¨³» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× ¶§, Ç×»ó µ¿ÀÏÇÑ ÀνºÅϽº°¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù.
$index
¿¡´Â, ·¹Áö½ºÆ®¸®³»ÀÇ À妽º¸¦ ÀÓÀÇÀÇ ¹®ÀÚ¿·Î ÁöÁ¤ÇÕ´Ï´Ù. Zend::registry()
±×¸®°í
°ªÀ» ÃëµæÇÒ ¶§¿¡, °°Àº À妽º¸¦ »ç¿ëÇÕ´Ï´Ù.
ÀÌ ·¹Áö½ºÆ®¸®ÀÇ »ý°¢Àº ArrayObject (¿Í)°ú °°½À´Ï´Ù.ÀÌ ¸Þ¼Òµå´Â, offsetSet() ¸Þ¼Òµå (À»)¸¦ ´ÜÁö ·¦ ÇÑ °ÍÀÔ´Ï´Ù.
·¹Áö½ºÆ®¸®³»¿¡¼ ¿ÀÇÁ¼Â $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) ? '
Á¸ÀçÇÕ´Ï´Ù' : '
Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù';
?>
¾ÆÁÖ Á¶±ÝÀÇ ¼ö°í·Î, Â÷·ÊÂ÷·Ê 󸮵µ °¡´ÉÇÕ´Ï´Ù.
°³¹ßÀÚ°¡ ±âÁ¸ÀÇ ·¹Áö½ºÆ®¸®ÀÇ ±â´ÉÀ» È®ÀåÇÏ°í ½ÍÀº °æ¿ì¿¡, ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå¿¡ ÀÇÇØ,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
(À»)¸¦ °è½ÂÇØ ÇÁ¶óÀ̺ø º¯¼ö¸¦ Ãß°¡ÇßÀ» °æ¿ì µîÀº, À̸§ÀÇ Ãæµ¹¿¡ ÁÖÀǰ¡ ÇÊ¿äÇÕ´Ï´Ù.