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

7.7.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 ÇÏÁö¸¸ Á¤Àǵǰí ÀÖ½À´Ï´Ù.

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

[ÁÖÀÇ] µðÆúÆ®ÀÇ °Åµ¿

µðÆúÆ®¿¡¼­´Â,ÇÁ·±Æ® ÄÜÆ®·Ñ·¯ ÇÏ ViewRenderer ¾×¼Ç ÇïÆÛ¸¦ À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.ÀÌ ÇïÆÛ´Â, ºä¿ÀºêÁ§Æ®¸¦ ÄÜÆ®·Ñ·¯¿¡ ÁÖÀÔÇØ, ºä¸¦ ÀÚµ¿ÀûÀ¸·Î ·»´õ¸µ ÇÕ´Ï´Ù. ¾×¼Ç ÄÜÆ®·Ñ·¯·Î À̰ÍÀ» ¹«È¿·Î ÇÏ·Á¸é , ÀÌÇÏÀÇ ¸î°³ÀÇ ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù.


<?php
class FooController extends Zend_Controller_Action
{
    public function 
init()
    {
        
// ÀÌ ÄÜÆ®·Ñ·¯¿¡¼­¸¸ ¹«È¿·Î ÇÕ´Ï´Ù.ÃʱâÈ­½Ã¿¡ ÀÐÈ÷¹Ç·Î, Àü¾×¼Ç¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù
        
$this->_helper->viewRenderer->setNoRender(true);

        
// Àüü·Î ¹«È¿·Î ÇÕ´Ï´Ù
        
$this->_helper->removeHelper('viewRenderer');

        
// À̰͵µ Àüü·Î ¹«È¿·Î ÇÕ´Ï´Ù¸¸, µ¿½Ã¿¡ ·ÎÄÿ¡¼­µµ ¹«È¿·Î ÇØ µÑ Çʿ䰡 ÀÖ½À´Ï´Ù.
        // À̰ÍÀº, ·ÎÄÃÀÇ ¼³Á¤À» Àüü¿¡ ÀüÆÄ ½ÃŰ´Â ¹æ¹ýÀÔ´Ï´Ù.
        
Zend_Controller_Front::getInstance()->setParam('noViewRenderer'true);
    }
}

initView(),getViewScript(), render() ¹× renderScript() (Àº)´Â, °¢°¢ ViewRenderer ¿¡ÀÇ ÇÁ·Ï½Ã°¡ µË´Ï´Ù. ´Ù¸¸ ÇïÆÛ ºê·ÎÄ¿³»¿¡ ÀÌ ÇïÆÛ°¡ µî·ÏµÇÁö ¾ÊÀº °æ¿ì³ª noViewRenderer Ç÷¡±×°¡ ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù.

°³°³ÀÇ ºäÀÇ ·»´õ¸µÀ» ¹«È¿·Î ÇÏ·Á¸é , ´Ü¼øÇÏ°Ô ViewRenderer ÀÇ noRender Ç÷¡±×¸¦ ¼³Á¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.


<?php
class FooController extends Zend_Controller_Action
{
    public function 
barAction()
    {
        
// ÀÌ ¾×¼Ç¿¡¼­¸¸ ÀÚµ¿ ·»´õ¸µÀ» ¹«È¿·Î ÇÕ´Ï´Ù
        
$this->_helper->viewRenderer->setNoRender();
    }
}

ViewRenderer (À»)¸¦ ¹«È¿·Î ÇÏ´Â Àå¸éÀ¸·Î¼­ »ý°¢ÇÒ ¼ö ÀÖ´Â °ÍÀº, ºä¿ÀºêÁ§Æ®¸¦ ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â °æ¿ì³ª ºä½ºÅ©¸³Æ® °æÀ¯·ÎÀÇ ·»´õ¸µÀ» ½Ç½ÃÇÏÁö ¾Ê´Â °æ¿ì (¿¹¸¦ µé¾î, ¾×¼Ç ÄÜÆ®·Ñ·¯¸¦ »ç¿ëÇØ SOAP (ÀÌ)³ª XML-RPC, REST ±×·¸´Ù°í ÇÏ´Â À¥ ¼­ºñ½º ÇÁ·ÎÅäÄÝÀ» Ãë±ÞÇÏ´Â °æ¿ì) ÀÔ´Ï´Ù.ViewRenderer (À»)¸¦ ±Û·Î¹ú·Î ¹«È¿·Î ÇÏ´Â °ÍÀº ¿ì¼± ¾øÀ» °ÍÀÔ´Ï´Ù. ¹«È¿·Î ÇÑ´Ù°í Çϸé, °³°³ÀÇ ÄÜÆ®·Ñ·¯³ª ¾×¼Ç ´ÜÀ§·Î ½Ç½ÃÇÏ°Ô µË´Ï´Ù.

7.7.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.7.3. µð½ºÆÌÄ¡ ÀüÈÄÀÇ ÈÅ

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

7.7.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) (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.

    [ÁÖÀÇ] ÁÖÀÇ

    _getParam() (Àº)´Â, ¿É¼ÇÀÇ µÎ¹øÂ°ÀÇ Àμö·Î µðÆúƮġ¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à ÆÄ¶ó¹ÌÅͰ¡ ¼³Á¤µÇ¾î ÀÖÁö ¾Ê°Å³ª ÇÏ´ÃÀ̱⵵ ÇßÀ» °æ¿ì´Â, ÀÌ µðÆúƮġ¸¦ »ç¿ëÇÏ°Ô µË´Ï´Ù. À̰ÍÀ» ÀÌ¿ëÇÏ´Â °ÍÀ¸·Î, °ªÀ» ÃëµæÇϱâ Àü¿¡ Çϳª Çϳª _hasParam() (À»)¸¦ ÄÝ ÇÒ Çʿ䰡 ¾ø¾îÁý´Ï´Ù.

    
    <?php
    // id ÇÏÁö¸¸ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ìÀÇ µðÆúƮġ¸¦ 1 (À¸)·Î ÇÕ´Ï´Ù
    $id $this->_getParam('id'1);

    // ÀϺη¯ ÀÌ¿Í °°ÀÌ ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù
    if ($this->_hasParam('id') {
        
    $id $this->_getParam('id');
    } else {
        
    $id 1;
    }

7.7.5. ºäÀÇ ÅëÇÕ

Zend_Controller_Action ±×·³, ºäÀÇ ÅëÇÕÀ» À§ÇÑ ¾à°£ÀÇ À¯¿¬ÇÑ ±¸Á¶¸¦ Á¦°øÇϰí ÀÖ½À´Ï´Ù. À̰ÍÀ» ½Ç½ÃÇÏ´Â °ÍÀº initView() (¿Í)°ú render() ÀÇ µÎ ¸Þ¼ÒµåÀÔ´Ï´Ù.ÀüÀÚÀÇ ¸Þ¼Òµå´Â ÆÛºí¸¯ ÇÁ·ÓÆÛƼ $view ÀÇ Áö¿¬ Àб⸦ ½Ç½ÃÇØ, ÈÄÀÚÀÇ ¸Þ¼Òµå´Â ¾×¼ÇÀÇ ¿ä±¸¿¡ ÀǰÅÇØ ºä¸¦ ·»´õ¸µ ÇÕ´Ï´Ù. ±× ¶§¿¡, µð·ºÅ丮 °èÃþÀ» ±âÃÊ·Î ½ºÅ©¸³Æ®ÀÇ ÆÐ½º¸¦ °áÁ¤ÇÕ´Ï´Ù.

7.7.5.1. ºäÀÇ ÃʱâÈ­

initView() (Àº)´Â ºä¿ÀºêÁ§Æ®¸¦ ÃʱâÈ­ÇÕ´Ï´Ù. render() ÇÏ initView() (À»)¸¦ ÄÝ ÇØ ºä¿ÀºêÁ§Æ®¸¦ ÃëµæÇÕ´Ï´Ù¸¸, ±× ÃʱâÈ­´Â ¾ðÁ¦¶óµµ ÁÁ¾ÆÇÏ´Â ¶§¿¡ ½Ç½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. µðÆúÆ®¿¡¼­´Â, ÃëµæÇÑ °á°ú´Â Zend_View ¿ÀºêÁ§Æ®ÀÇ ÇÁ·ÓÆÛƼ $view ¿¡ °Ý³³µË´Ï´Ù¸¸, Zend_View_Interface (À»)¸¦ ½ÇÀåÇÑ Å¬·¡½º¶ó¸é ¹¹µçÁö ÁÁ¾ÆÇÏ´Â °ÍÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. $view ÇÏÁö¸¸ ¹ú½á ÃʱâÈ­µÇ°í ÀÖ´Â °æ¿ì´Â, ±× ÇÁ·ÓÆÛƼÀÇ ³»¿ëÀ» µ¹·ÁÁÝ´Ï´Ù.

µðÆúÆ®ÀÇ ½ÇÀåÀº, ÀÌÇÏ¿Í °°Àº µð·ºÅ丮 °èÃþÀ» ÀüÁ¦·Î Çϰí ÀÖ½À´Ï´Ù.


applicationOrModule/
    controllers/
        IndexController.php
    views/
        scripts/
            index/
                index.phtml
        helpers/
        filters/

¹Ù²Ù¾î ¸»Çϸé, ºä½ºÅ©¸³Æ®°¡ views/scripts/ µð·ºÅ丮³»¿¡ ÀÖ¾î, ÇÑÆí views µð·ºÅ丮³»ÀÇ µ¿ÀÏ °èÃþ¿¡ °¢ ±â´É (ÇïÆÛ, ÇÊÅÍ)ÀÇ µð·ºÅ丮°¡ ÀÖ´Â °ÍÀÔ´Ï´Ù. ºä½ºÅ©¸³Æ®ÀÇ À̸§°ú ÆÐ½º¸¦ °áÁ¤ÇÒ ¶§ÀÇ ±âÀú µð·ºÅ丮·Î¼­ views/scripts/ ÇÏÁö¸¸ ÀÌ¿ëµË´Ï´Ù. ±× Áß¿¡, ºä½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â ÄÜÆ®·Ñ·¯¸í¿¡ ±Ù°ÅÇÑ À̸§ÀÇ µð·ºÅ丮°¡ ÀÛ¼ºµË´Ï´Ù.

7.7.5.2. ºäÀÇ ·»´õ¸µ

render() ÀÇ ¼­¸íÀº ´ÙÀ½°ú °°½À´Ï´Ù.


<?php
string render
(string $action nullstring $name nullbool $noController false);

render() (Àº)´Â ºä½ºÅ©¸³Æ®¸¦ ·»´õ¸µ ÇÕ´Ï´Ù. Àμö¸¦ »ý·« ÇßÀ» °æ¿ì´Â,[controller]/[action].phtml ÇÏÁö¸¸ ÁöÁ¤µÈ °ÍÀ¸·Î °£ÁÖÇÕ´Ï´Ù(.phtml ÇÏ $viewSuffix ÇÁ·ÓÆÛƼÀÇ °ªÀÔ´Ï´Ù). $action (À»)¸¦ ÁöÁ¤Çϸé,[controller] µð·ºÅ丮¿¡ ÀÖ´Â ±× À̸§ÀÇ ÅÛÇø´À» ·»´õ¸µ ÇÕ´Ï´Ù. [controller] µð·ºÅ丮¸¦ »ç¿ëÇÏÁö ¾Ê°Ô ÇÏ·Á¸é , $noController ¿¡ true (À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÅÛÇø´À» ·»´õ¸µ ÇÑ °á°ú´Â ¸®½ºÆù½º ¿ÀºêÁ§Æ®¿¡ °Ý³³µË´Ï´Ù. ¸®½ºÆù½º ¿ÀºêÁ§Æ®¾ÈÀÇ, ƯÁ¤ÀÇ À̸§À» ºÙÀÎ ºÎºÐ ¿¡ °Ý³³ÇÏ°í ½ÍÀº °æ¿ì´Â, $name ÀÇ °ªÀ» ÁöÁ¤ÇÕ´Ï´Ù.

[ÁÖÀÇ] ÁÖÀÇ

ÄÜÆ®·Ñ·¯³ª ¾×¼ÇÀÇ À̸§¿¡´Â ´Ü¶ôÁö¾î ¹®ÀÚ ('_' (ÀÌ)³ª '.','-') (À»)¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖÀ¸¹Ç·Î, render() (Àº)´Â ½ºÅ©¸³Æ®¸íÀ» °áÁ¤ÇÒ ¶§¿¡ ÀÌ·¯ÇÑ ¹®ÀÚ¸¦ '-' ¿¡ Á¤±ÔÈ­ÇÕ´Ï´Ù.³»ºÎÀûÀ¸·Î´Â, µð½ºÆÖÃÄ·Î ¼³Á¤µÇ¾î ÀÖ´Â ´Ü¾î³ª ÆÐ½ºÀÇ ´Ü¶ô ¹®ÀÚ¸¦ Á¤±ÔÈ­½Ã¿¡ ÀÌ¿ëÇÕ´Ï´Ù. µû¶ó¼­,/foo.bar/baz-bat ¿¡ÀÇ ¸®Äù½ºÆ® ½Ã¿¡ ·»´õ¸µ µÇ´Â ½ºÅ©¸³Æ®´Â foo-bar/baz-bat.phtml ÀÔ´Ï´Ù. ¾×¼Ç ¸Þ¼Òµå¸íÀÌ camelCase ¹æ½ÄÀÇ °æ¿ì, ºä½ºÅ©¸³Æ®ÀÇ ÆÄÀÏ¸í¿¡¼­´Â ´Ü¾î°¡ '-' ±×¸®°í ´Ü¶ôÁö¾îÁö´Â °Í¿¡ ÁÖÀÇÇսôÙ.

¿¹¸¦ º¾½Ã´Ù.


<?php
class MyController extends Zend_Controller_Action
{
    public function 
fooAction()
    {
        
// my/foo.phtml (À»)¸¦ ·»´õ¸µ ÇÕ´Ï´Ù
        
$this->render();

        
// my/bar.phtml (À»)¸¦ ·»´õ¸µ ÇÕ´Ï´Ù
        
$this->render('bar');

        
// baz.phtml (À»)¸¦ ·»´õ¸µ ÇÕ´Ï´Ù
        
$this->render('baz'nulltrue);

        
// my/login.phtml (À»)¸¦ ·»´õ¸µ ÇØ, ¸®½ºÆù½º ¿ÀºêÁ§Æ®ÀÇ 'form' ÀÇ ºÎºÐ¿¡ µ¹·ÁÁÝ´Ï´Ù
        
$this->render('login''form');

        
// site.phtml (À»)¸¦ ·»´õ¸µ ÇØ, ¸®½ºÆù½º ¿ÀºêÁ§Æ®ÀÇ 'page' ÀÇ ºÎºÐ¿¡ µ¹·ÁÁÝ´Ï´Ù
        // 'my/' µð·ºÅ丮´Â »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù
        
$this->render('site''page'true);
    }

    public function 
bazBatAction()
    {
        
// my/baz-bat.phtml (À»)¸¦ ·»´õ¸µ ÇÕ´Ï´Ù
        
$this->render();
    }
}

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

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

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

  • _redirect($url, array $options = array()): ´Ù¸¥ Àå¼Ò¿¡ ¸®µð·ºÆ® ÇÕ´Ï´Ù.ÀÌ ¸Þ¼Òµå¿¡´Â,URL ¿Ü¿¡ ÀÓÀÇ·Î ¿É¼Ç±ºÀ» ÁöÁ¤ÇÕ´Ï´Ù. µðÆúÆ®¿¡¼­´Â,HTTP 302 ¸®µð·ºÆ®¸¦ ½Ç½ÃÇÕ´Ï´Ù.

    ¿É¼ÇÀº, ÀÌÇÏ Áß Çϳª ȤÀº º¹¼öÀÇ Æí¼ºÀÌ µË´Ï´Ù.

    • exit: Áï½Ã¿¡ Á¾·áÇÒ±î ÇÏÁö ¾Ê´Â°¡. À̰ÍÀ» ÁöÁ¤Çϸé, ¿ÀÇÂÇØ ÀÖ´Â ¼¼¼ÇÀ» ¸ðµÎ ´ÝÀº ÈÄ¿¡ ¸®µð·ºÆ® ÇÕ´Ï´Ù.

      ÀÌ ¿É¼ÇÀ» ÄÜÆ®·Ñ·¯ Àüü·Î À¯È¿ÇÏ°Ô ÇÏ·Á¸é , ¾×¼¼½º ¸Þ¼Òµå setRedirectExit() (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.

    • prependBase: ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¿¡ µî·ÏµÇ¾î ÀÖ´Â ±âÀú URL (À»)¸¦ ÀÌ URL ÀÇ ¼±µÎ¿¡ ºÎ°¡ÇÒÁö.

      ÀÌ ¿É¼ÇÀ» ÄÜÆ®·Ñ·¯ Àüü·Î À¯È¿ÇÏ°Ô ÇÏ·Á¸é , ¾×¼¼½º ¸Þ¼Òµå setRedirectPrependBase() (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.

    • code: ¸®µð·ºÆ® ½Ã¿¡ ¾î´À HTTP Äڵ带 »ç¿ëÇÒ±î. µðÆúÆ®¿¡¼­´Â HTTP 302 (À»)¸¦ »ç¿ëÇÕ´Ï´Ù¸¸, 301 (À¸)·ÎºÎÅÍ 306 ±îÁöÀÇ ÀÓÀÇÀÇ °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

      ÀÌ ¿É¼ÇÀ» ÄÜÆ®·Ñ·¯ Àüü·Î À¯È¿ÇÏ°Ô ÇÏ·Á¸é , ¾×¼¼½º ¸Þ¼Òµå setRedirectCode() (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.

7.7.7. ¾×¼Ç ÄÜÆ®·Ñ·¯ÀÇ ¼­ºê Ŭ·¡½ºÀÇ ÀÛ¼º

¾×¼Ç ÄÜÆ®·Ñ·¯¸¦ ÀÛ¼ºÇÏ·Á¸é , ¹Ýµå½Ã Zend_Controller_Action ÀÇ ¼­ºê Ŭ·¡½º¸¦ ÀÛ¼ºÇØ¾ß ÇÏ°Ô µÇ¾î ÀÖ½À´Ï´Ù. ÃÖÀúÇÑ, ÄÜÆ®·Ñ·¯°¡ ÄÝ ÇÏ´Â ¾×¼Ç ¸Þ¼Òµå¸¦ Á¤ÀÇÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.

ÀÚ½ÅÀÇ À¥ ¾îÇø®ÄÉÀ̼ǿëÀ¸·Î Æí¸®ÇÑ ±â´ÉÀ» ½ÇÀåÇØ ³ª°¡´Â ÇÑÆíÀ¸·Î, °°Àº »çÀü 󸮳ª ¾à°£ÀÇ Ã³¸®¸¦ ¿©±âÀú±âÀÇ ÄÜÆ®·Ñ·¯·Î ¾²°í ÀÖ´Ù°í Çß´ø ÀûÀº ¾ø½À´Ï±î? ±×·¯ÇÑ °æ¿ì´Â,Zend_Controller_Action (À»)¸¦ °è½ÂÇÑ °øÅë ±âÀú ÄÜÆ®·Ñ·¯ Ŭ·¡½º¸¦ ÀÛ¼ºÇØ, °øÅë 󸮸¦ °Å±â¿¡ Á¤¸®ÇØ °¡µµ·Ï ÇսôÙ.

·Ê 7.1. Á¸ÀçÇÏÁö ¾Ê´Â ¾×¼ÇÀÇ Ã³¸®

ÄÜÆ®·Ñ·¯¿¡ÀÇ ¸®Äù½ºÆ® ½Ã¿¡ ¹ÌÁ¤µµ¸®ÀÇ ¾×¼Ç ¸Þ¼Òµå°¡ ÁöÁ¤µÇ¾úÀ» °æ¿ì´Â, Zend_Controller_Action::__call() (À»)¸¦ ½ÇÇàÇÕ´Ï´Ù. __call() (¿Í)°ú´Â ¹°·Ð,PHP ÀÇ ¸ÅÁ÷ ¸Þ¼Òµå·Î, ¸Þ¼ÒµåÀÇ overload¿ëÀ¸·Î »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.

µðÆúÆ®¿¡¼­´Â, ÀÌ ¸Þ¼Òµå´Â Zend_Controller_Action_Exception (À»)¸¦ ½½·Î¿ì Çϰí, ÄÜÆ®·Ñ·¯¾È¿¡ ¾×¼ÇÀÌ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °ÍÀ» ³ªÅ¸³À´Ï´Ù. ¸¸¾à ´Ù¸¥ µ¿ÀÛÀ» ½ÃŰ°í ½ÍÀº °æ¿ì´Â, À̰ÍÀ» ¿À¹ö¶óÀ̵å(override) ÇսôÙ.

¿¹¸¦ µé¾î, ¿¡·¯ ¸Þ¼¼Áö¸¦ Ç¥½Ã½ÃŰ°í ½ÍÀº °æ¿ì´Â ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.


<?php
class MyController extends Zend_Controller_Action
{
    public function 
__call($method$args)
    {
        if (
'Action' == substr($method, -6)) {
            
// ¾×¼Ç ¸Þ¼Òµå°¡ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì´Â, ¿¡·¯¿ëÀÇ ÅÛÇø´À» ·»´õ¸µ ÇÕ´Ï´Ù
            
return $this->render('error');
        }

        
// ±× ¿ÜÀÇ ¸Þ¼ÒµåÀÇ °æ¿ì´Â ¿¹¿Ü¸¦ ½½·Î¿ì ÇÕ´Ï´Ù
        
throw new Exception('Invalid method "' $method '" called');
    }
}

¶Ç ÇϳªÀÇ ¿¹·Î¼­ µðÆúÆ® ÄÜÆ®·Ñ·¯¿¡ Àü¼Û Çϴ ó¸®¸¦ º¾½Ã´Ù.


<?php
class MyController extends Zend_Controller_Action
{
    public function 
indexAction()
    {
        
$this->render();
    }

    public function 
__call($method$args)
    {
        if (
'Action' == substr($method, -6)) {
            
// ¾×¼Ç ¸Þ¼Òµå°¡ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì´Â,index ¾×¼Ç¿¡ Àü¼Û ÇÕ´Ï´Ù
            
return $this->_forward('index');
        }

        
// ±× ¿ÜÀÇ ¸Þ¼ÒµåÀÇ °æ¿ì´Â ¿¹¿Ü¸¦ ½½·Î¿ì ÇÕ´Ï´Ù
        
throw new Exception('Invalid method "' $method '" called');
    }
}

__call() (À»)¸¦ ¿À¹ö¶óÀ̵å(override) ÇÏ´Â ´ë½Å¿¡, Áö±Ý±îÁö ¼³¸íÇØ ¿Â °¢Á¾ ÈÅ ¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵å(override) ÇØ ÄÜÆ®·Ñ·¯¸¦ Ä¿½ºÅ͸¶ÀÌÁî ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ºä¿ÀºêÁ§Æ®¸¦ ·¹Áö½ºÆ®¸®¿¡ º¸Á¸ÇÏ°í ½ÍÀº °æ¿ì´Â, initView() ¸Þ¼Òµå¸¦ ´ÙÀ½°ú °°ÀÌ °íÃÄ ¾²°Ô µÇ°ÚÁö¿ä.


<?php
abstract class My_Base_Controller extends Zend_Controller_Action
{
    public function 
initView()
    {
        if (
null === $this->view) {
            if (
Zend_Registry::isRegistered('view')) {
                
$this->view Zend_Registry::get('view');
            } else {
                
$this->view = new Zend_View();
                
$this->view->setBasePath(dirname(__FILE__) . '/../views');
            }
        }

        return 
$this->view;
    }
}

ÀÌ ÀåÀÇ Á¤º¸¸¦ ±âÃÊ·Î, °¢°¢ÀÇ ±â´ÉÀÇ À¯¿¬¼ºÀ» ±âÃÊ·Î ÇØ¼­ ¾îÇø®ÄÉÀ̼ÇÀ̳ª »çÀÌÆ®ÀÇ ¿ä±¸¿¡ ÀÀÇÑ ÄÜÆ®·Ñ·¯¸¦ ÀÛ¼ºÇØ ³ª°¡¸é ÁÁÀ» °ÍÀÔ´Ï´Ù.