7.5. ¾×¼Ç ÄÜÆ®·Ñ·¯

7.5.1. µµÀÔ

Zend_Controller_Action (Àº)´Â, ¸ðµ¨ - ºä - ÄÜÆ®·Ñ·¯ (MVC) ÆÐÅÏ¿¡ ÀǰÅÇÑ À¥ ¾îÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÒ ¶§¿¡, ÇÁ·±Æ® ÄÜÆ®·Ñ·¯·Î »ç¿ëÇÏ´Â ¾×¼Ç ÄÜÆ®·Ñ·¯¸¦ ½ÇÀåÇϱâ À§ÇÑ Ãß»ó Ŭ·¡½ºÀÔ´Ï´Ù.

Zend_Controller_Action (À»)¸¦ »ç¿ëÇÏ·Á¸é , ½ÇÁ¦ÀÇ ¾×¼Ç ÄÜÆ®·Ñ·¯³»¿¡¼­ ÀÌ Å¬·¡½ºÀÇ ¼­ºê Ŭ·¡½º¸¦ ÀÛ¼ºÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù ( ȤÀº, ÀÛ¼ºÇÑ ¼­ºê Ŭ·¡½º¸¦ ±âÃÊ·Î ÇØ¼­ ¾×¼Ç ÄÜÆ®·Ñ·¯¸¦ ÀÛ¼ºÇÕ´Ï´Ù) . ±âº»ÀûÀÎ »ç¿ë¹ýÀ¸·Î¼­´Â, ¿ì¼± ¼­ºê Ŭ·¡½º¸¦ ÀÛ¼ºÇØ, ±×¸®°í ´ç½ÅÀÇ »çÀÌÆ®»ó¿¡¼­ ó¸®ÇØ µµ¹Ì ´Ù¾çÇÑ ¾×¼Ç¿¡ ´ëÀÀÇÑ´Ù ¾×¼Ç ¸Þ¼Òµå¸¦ ÀÛ¼ºÇÑ´Ù°í ÇÏ´Â È帧ÀÌ µË´Ï´Ù. Zend_Controller (Àº)´Â, ÀÌ Å¬·¡½º³»ÀÇ ¸Þ¼Òµå·Î 'Action' (ÀÌ)¶ó´Â À̸§À¸·Î ³¡³ª´Â °ÍÀ» ã¾Æ³»¸é, ·çÆÃÀ̳ª µð½ºÆÌÄ¡ ½Ã¿¡ ±×°ÍµéÀ» ÀÚµ¿ÀûÀ¸·Î ¾×¼ÇÀ¸·Î¼­ Ãë±ÞÇÕ´Ï´Ù.

¿¹¸¦ µé¾î, ´ÙÀ½°ú °°Àº Ŭ·¡½º¸¦ º¾½Ã´Ù.


class FooController extends Zend_Controller_Action
{
    public function barAction()
    {
        //  ¹«¾ùÀΰ¡¸¦ ÇÕ´Ï´Ù
    }

    public function bazAction()
    {
        //  ¹«¾ùÀΰ¡¸¦ ÇÕ´Ï´Ù
    }
}

ÀÌ FooController Ŭ·¡½º ('foo' ÄÜÆ®·Ñ·¯) ±×·³, µÎ ¾×¼Ç 'bar' ¹× 'baz' ÇÏÁö¸¸ Á¤Àǵǰí ÀÖ½À´Ï´Ù.

¹°·Ð À̿ܿ¡µµ ¸¹Àº ±â´ÉÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ÃʱâÈ­ ¾×¼ÇÀ» µ¶ÀÚÀûÀ¸·Î ÀÛ¼ºÇϰųª ¾×¼ÇÀ» ÁöÁ¤ÇÏÁö ¾Ê¾Ò´Ù ( ȤÀº ¹«È¿ÀÎ ¾×¼ÇÀ» ÁöÁ¤Çß´Ù) ¶§¿¡ ÄÝ µÇ´Â µðÆúÆ®ÀÇ ¾×¼ÇÀ» ÁöÁ¤Çϰųª µð½ºÆÌÄ¡ÀÇ ÀüÈÄ¿¡ ½ÇÇàµÇ´Â ÈÅÀ» ÁöÁ¤Çϰųª ´Ù¾çÇÑ ÇïÆÛ ¸Þ¼Òµå¸¦ »ç¿ëÇϰųª¶ó°í Çß´ø °ÍÀÌ ÀÖ½À´Ï´Ù. ÀÌ Àå¿¡¼­´Â, ¾×¼Ç ÄÜÆ®·Ñ·¯ÀÇ ±â´ÉÀÇ °³¿ä¸¦ ¼³¸íÇÕ´Ï´Ù.

7.5.2. ¿ÀºêÁ§Æ®ÀÇ ÃʱâÈ­

¾×¼Ç ÄÜÆ®·Ñ·¯ÀÇ constructor¡¡ ¡¡ À» ¿À¹ö¶óÀ̵å(override) ÇÒ ¼öµµ ÀÖ½À´Ï´Ù¸¸, ÃßõÇÏÁö ¾Ê½À´Ï´Ù.Zend_Controller_Action::__construct() (Àº)´Â, ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®³ª ¸®½ºÆù½º ¿ÀºêÁ§Æ®¸¦ µî·ÏÇÏ´Â µîÀÇ Áß¿äÇÑ ÀÛ¾÷À» ½Ç½ÃÇÕ´Ï´Ù. ¶Ç, ÇÁ·±Æ® ÄÜÆ®·Ñ·¯·ÎºÎÅÍ °Ç³×¹ÞÀº ±âµ¿½Ã ÀμöÀÇ Ã³¸®µµ ½Ç½ÃÇÕ´Ï´Ù. constructor¡¡ ¡¡ À» ¿À¹ö¶óÀ̵å(override) ÇÏ´Â °æ¿ì´Â, ¹Ýµå½Ã ±× Áß¿¡ parent::__construct($request, $response, $invokeArgs) (À»)¸¦ ÄÝ Çϵµ·Ï ÇսôÙ.

ÃʱâÈ­ ÀÛ¾÷À» Ä¿½ºÅ͸¶ÀÌÁî ÇÏ·Á¸é , constructor¡¡ ¡¡ À» ¿À¹ö¶óÀ̵å(override) ÇÏ´Â °Íº¸´Ùµµ init() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â ÆíÀÌ ÃßõÀÔ´Ï´Ù.À̰ÍÀº,__construct() Áß(¾È)¿¡¼­ ¸¶Áö¸·¿¡ ÄÝ µË´Ï´Ù.¿¹¸¦ µé¾î, ÃʱâÈ­½Ã¿¡ µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÏ°í ½ÍÀ¸¸é ´ÙÀ½°ú °°ÀÌ ÇÕ´Ï´Ù.


class FooController extends Zend_Controller_Action
{
    public function init()
    {
        $this->db = Zend_Db::factory('Pdo_Mysql', array(
            'host'     => 'myhost',
            'username' => 'user',
            'password' => 'XXXXXXX',
            'dbname'   => 'website'
        ));
    }
}

7.5.3. µð½ºÆÌÄ¡ ÀüÈÄÀÇ ÈÅ

Zend_Controller_Action ¿¡´Â, ¸®Äù½ºÆ® µÈ ¾×¼ÇÀÇ ÀüÈÄ¿¡ ÄÝ µÇ´Â µÎ ¸Þ¼Òµå°¡ ÀÖ½À´Ï´Ù.±×°ÍÀÌ preDispatch() (¿Í)°ú postDispatch() ÀÔ´Ï´Ù. À̰͵éÀº ´Ù¾çÇÑ Àå¸é¿¡¼­ Ȱ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ¾×¼ÇÀ» ½ÇÇàÇϱâ Àü¿¡ ÀÎÁõ Á¤º¸³ª ACL (À»)¸¦ Á¶»çÇϰųª (preDispatch() Áß(¾È)¿¡¼­ _forward() (À»)¸¦ ÄÝ Çϸé, ±× ¾×¼ÇÀÇ Ã³¸®´Â ³¯¾Æ°©´Ï´Ù) , ÀÛ¼ºÇÑ ÄÁÅÙÃ÷¸¦ (postDispatch() ±×¸®°í) Àü»çÀÌÆ® °øÅëÀÇ ÅÛÇø´¿¡ ¹èÄ¡Çϰųª¶ó°í Çß´ø °ÍÀÌ »ý°¢ÇÒ ¼ö ÀÖ½À´Ï´Ù.

7.5.4. ¾×¼¼½º¿ë ¸Þ¼Òµå

´Ù¾çÇÑ ¿ÀºêÁ§Æ®³ª º¯¼ö°¡ ¿ÀºêÁ§Æ®¿¡ µî·ÏµÇ¾î ÀÖ¾î °¢°¢ ¾×¼¼½º¿ë ¸Þ¼Òµå°¡ ÁغñµÇ¾î ÀÖ½À´Ï´Ù.

  • ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®: getRequest() (À»)¸¦ »ç¿ëÇØ ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¸¦ ÃëµæÇØ, ±×°ÍÀ» ÀÌ¿ëÇØ ¾×¼ÇÀ» ÄÝ ÇÕ´Ï´Ù.

  • ¸®½ºÆù½º ¿ÀºêÁ§Æ®: getResponse() (À»)¸¦ »ç¿ëÇϰí, ÃÖÁ¾ÀûÀÎ ¸®½ºÆù½ºÀÇ ³»¿ëÀ» ÃëµæÇÕ´Ï´Ù. ÀüÇüÀûÀÎ »ç¿ë¹ýÀº, ÀÌ¿Í °°ÀÌ µË´Ï´Ù.

    
    $this->getResponse()->setHeader('Content-Type', 'text/xml');
    $this->getResponse()->appendBody($content);
  • ±âµ¿½Ã Àμö: ÇÁ·±Æ® ÄÜÆ®·Ñ·¯´Â, ÆÄ¶ó¹ÌÅ͸¦ ¶ó¿ìÅͳª µð½ºÆÖÃÄ ±×¸®°í ¾×¼Ç ÄÜÆ®·Ñ·¯¿¡ º¸³À´Ï´Ù. ÀÌ·¯ÇÑ ÆÄ¶ó¹ÌÅ͸¦ ÃëµæÇÏ·Á¸é , getInvokeArg($key) (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.ȤÀº, ¸ðµç ÆÄ¶ó¹ÌÅ͸¦ ÃëµæÇÏ·Á¸é getInvokeArgs() (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.

  • ¸®Äù½ºÆ® ÆÄ¶ó¹ÌÅÍ: ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®´Â,_GET (ÀÌ)³ª _POST (¿Í)°ú °°Àº ¸®Äù½ºÆ® ÆÄ¶ó¹ÌÅÍ ¿Ü¿¡ URL ÀÇ ÆÐ½º·Î ÁöÁ¤ÇÑ ÆÄ¶ó¹ÌÅ͵µ ¼öÁýÇÕ´Ï´Ù. À̰͵éÀ» ÃëµæÇÏ·Á¸é ,_getParam($key) ȤÀº _getAllParams() (À»)¸¦ »ç¿ëÇÕ´Ï´Ù. _setParam() (À»)¸¦ »ç¿ëÇϰí, ¸®Äù½ºÆ® ÆÄ¶ó¹ÌÅ͸¦ ¼³Á¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. À̰ÍÀº, ÇÑÃþ ´õ ´Ù¸¥ ¾×¼Ç¿¡ Àü¼Û ÇÒ ¶§ µî¿¡ À¯¿ëÇÕ´Ï´Ù.

    ÆÄ¶ó¹ÌÅͰ¡ Á¸ÀçÇÒÁö¸¦ Á¶»çÇÑ´Ù ( Á¶°Ç ºÐ±â ½Ã¿¡ »ç¿ëÇÕ´Ï´Ù) ¿¡´Â, _hasParam($key) (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.

7.5.5. À¯Æ¿¸®Æ¼ ¸Þ¼Òµå

¾×¼¼½º¿ë ¸Þ¼Òµå À̿ܿ¡µµ,Zend_Controller_Action ¿¡´Â ¸î°³ÀÇ À¯Æ¿¸®Æ¼ ¸Þ¼Òµå°¡ ÁغñµÇ¾î ÀÖ½À´Ï´Ù. À̰͵éÀ» »ç¿ëÇϰí, ¾×¼Ç ¸Þ¼Òµå ( ȤÀº µð½ºÆÌÄ¡ ÀüÈÄÀÇ ÈÅ ¸Þ¼Òµå) (À¸)·ÎÀÇ ´Ù¾çÇÑ ÀÛ¾÷À» ½Ç½ÃÇÕ´Ï´Ù.

  • _forward($action, $controller = null, $module = null, array $params = null): ´Ù¸¥ ¾×¼ÇÀ» ½ÇÇàÇÕ´Ï´Ù.preDispatch() Áß(¾È)¿¡¼­ ÄÝ Çϸé, ¸®Äù½ºÆ® µÇ°í ÀÖ´ø ¾×¼ÇÀº ³¯¾Æ°¡ »õ·Î¿î ¾×¼ÇÀ» ½ÇÇàÇÕ´Ï´Ù.±× ÀÌ¿ÜÀÇ °æ¿ì´Â, ÇöÀçÀÇ ¾×¼ÇÀÇ Ã³¸®¸¦ ³¡¸¶Ä£ ´ÙÀ½¿¡ _forward() ±×¸®°í ÁöÁ¤ÇÑ ¾×¼ÇÀ» ½ÇÇàÇÕ´Ï´Ù.

  • _redirect($url, $code = 302): ´Ù¸¥ Àå¼Ò¿¡ ¸®µð·ºÆ® ÇÕ´Ï´Ù.ÀÌ ¸Þ¼Òµå¿¡´Â,URL ¿Ü¿¡ ¿É¼ÇÀ¸·Î HTTP »óÅ Äڵ带 ÁöÁ¤ÇÕ´Ï´Ù. ¸®µð·ºÆ®´Â ±× ÀÚ¸®¿¡¼­ °ð ÇàÇØÁ® ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀº °Å±â¼­ Á¤ÁöÇÕ´Ï´Ù.

    »óÅ Äڵ带 ÁöÁ¤ÇßÀ» °æ¿ì´Â, ¸®µð·ºÆ®½Ã¿¡ PHP ÀÇ header() Ä¿¸àµå·Î Äڵ尡 »ç¿ëµË´Ï´Ù.