7.6. Ç÷¯±× ÀÎ

7.6.1. µµÀÔ

ÄÜÆ®·Ñ·¯¿¡´Â Ç÷¯±× ÀÎ ±â±¸°¡ Â¥³Ö¾îÁö°í ÀÖ¾î ÄÜÆ®·Ñ·¯ÀÇ Ã³¸®Áß¿¡ À̺¥Æ®°¡ ¹ß»ýÇßÀ» ¶§¿¡ À¯ÀúÀÇ Äڵ带 ÄÝ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÁ·±Æ® ÄÜÆ®·Ñ·¯´Â, Ç÷¯±× ÀÎ ºê·ÎÄ¿¿¡ À¯ÀúÀÇ Ç÷¯±× ÀÎÀ» µî·ÏÇÕ´Ï´Ù. ±×¸®°í, À̺¥Æ® ¸Þ¼Òµå°¡ ÄÝ µÇ¾úÀ» ¶§¿¡, ÇÁ·±Æ® ÄÜÆ®·Ñ·¯¿¡ µî·ÏµÇ¾î ÀÖ´Â Ç÷¯±× ÀÎÀ» Ç÷¯±× ÀÎ ºê·ÎÄ¿°¡ ½ÇÇàÇÕ´Ï´Ù.

À̺¥Æ® ¸Þ¼Òµå´Â, Ãß»ó Ŭ·¡½º Zend_Controller_Plugin_Abstract ±×¸®°í Á¤Àǵǰí ÀÖ½À´Ï´Ù. À¯Àú°¡ ÀÛ¼ºÇÏ´Â Ç÷¯±× ÀΠŬ·¡½º´Â, À̰ÍÀ» °è½Â½Ãŵ´Ï´Ù.

  • routeStartup() (Àº)´Â,Zend_Controller_Front ÇÏÁö¸¸ ·çÆ®¿¡ ´ëÇÑ ¸®Äù½ºÆ®ÀÇ Æò°¡¸¦ ½ÃÀÛÇϱâ Àü¿¡ ÄÝ µË´Ï´Ù.

  • routeShutdown() (Àº)´Â,Zend_Controller_Router (ÀÌ)°¡ Á¾·áµÈ ÈÄ,Zend_Controller_Front ÇÏÁö¸¸ ¶ó¿ìÅͷκÎÅÍ ºüÁú ¶§¿¡ ÄÝ µË´Ï´Ù.

  • dispatchLoopStartup() (Àº)´Â,Zend_Controller_Front ÇÏÁö¸¸ µð½ºÆÌÄ¡¸£ÇÁ¿¡ µé¾î°¡±â Àü¿¡ ÄÝ µË´Ï´Ù.

  • preDispatch() (Àº)´Â, ¾×¼ÇÀÌ Zend_Controller_Dispatcher ±×¸®°í µð½ºÆÌÄ¡ µÇ±â Àü¿¡ ÄÝ µË´Ï´Ù. ÀÌ ÄݹéÀº, ÇÁ·Ï½Ã³ª ÇÊÅÍÀûÀÎ µ¿ÀÛÀ» ½Ãų ¼ö ÀÖ½À´Ï´Ù. ¸®Äù½ºÆ®ÀÇ ³»¿ëÀ» º¯°æÇØ µð½ºÆÌÄ¡ÈĶó±×¸¦ ¸®¼ÂÆ® (Zend_Controller_Request_Abstract::setDispatched(false) (À»)¸¦ »ç¿ëÇÕ´Ï´Ù) ÇÏ´Â °ÍÀ¸·Î, ÇöÀçÀÇ ¾×¼ÇÀ» ½ºÅµ ½Ãų ¼ö ÀÖ½À´Ï´Ù.

  • postDispatch() (Àº)´Â, ¾×¼ÇÀÌ Zend_Controller_Dispatcher ±×¸®°í µð½ºÆÌÄ¡ µÈ ÈÄ¿¡ ÄÝ µË´Ï´Ù. ÀÌ ÄݹéÀº, ÇÁ·Ï½Ã³ª ÇÊÅÍÀûÀÎ µ¿ÀÛÀ» ½Ãų ¼ö ÀÖ½À´Ï´Ù. ¸®Äù½ºÆ®ÀÇ ³»¿ëÀ» º¯°æÇØ µð½ºÆÌÄ¡ÈĶó±×¸¦ ¸®¼ÂÆ® (Zend_Controller_Request_Abstract::setDispatched(false) (À»)¸¦ »ç¿ëÇÕ´Ï´Ù) ÇÏ´Â °ÍÀ¸·Î, »õ·Î¿î µð½ºÆÌġó ¾×¼ÇÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

  • dispatchLoopShutdown() (Àº)´Â,Zend_Controller_Front ÇÏÁö¸¸ µð½ºÆÌÄ¡¸£ÇÁ¸¦ ºüÁö±â Àü¿¡ ÄÝ µË´Ï´Ù.

7.6.2. Ç÷¯±× ÀÎÀÇ ¾²´Â ¹ý

Ç÷¯±× ÀΠŬ·¡½º¸¦ ¾²·Á¸é , ´ÜÁö Ãß»ó Ŭ·¡½º Zend_Controller_Plugin_Abstract (À»)¸¦ ÀÎŬ·çµå ÇØ ±×°ÍÀ» °è½ÂÇÒ »ÓÀÔ´Ï´Ù.


<?php
require_once 'Zend/Controller/Plugin/Abstract.php';

class 
MyPlugin extends Zend_Controller_Plugin_Abstract
{
    
// ...
}

Zend_Controller_Plugin_Abstract ¿¡´Â Ãß»ó ¸Þ¼Òµå´Â ¾ø½À´Ï´Ù. Áï, À§¿¡ ³ªÅ¸³½ À̺¥Æ® ¸Þ¼Òµå¸¦, Ç÷¯±× ÀΠŬ·¡½º Å«µé¾Ê°í ½ÇÀåÇØ¾ß ÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. Ç÷¯±× ÀÎÀÇ ÀÛÀÚ°¡, ÇÊ¿äÇÑ °Í¸¸À» ¼±ÅÃÇØ ½ÇÀåÇÒ ¼ö ÀÖ½À´Ï´Ù.

Zend_Controller_Plugin_Abstract ±×·³, ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®³ª ¸®½ºÆù½º ¿ÀºêÁ§Æ®¸¦ Ç÷¯±× ÀÎÀ¸·ÎºÎÅÍ Á¶ÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. °¢°¢,getRequest() ¸Þ¼Òµå ¹× getResponse() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.

7.6.3. Ç÷¯±× ÀÎÀÇ »ç¿ë¹ý

Ç÷¯±× ÀΠŬ·¡½º¸¦ µî·ÏÇÏ·Á¸é , µð½ºÆÌÄ¡ÀÇ Àü¿¡ Zend_Controller_Front::registerPlugin() (À»)¸¦ ÄÝ ÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¿¹´Â, ÄÜÆ®·Ñ·¯ ÃÖÀÎÀ¸·Î Ç÷¯±× ÀÎÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀ» ³ªÅ¸³»´Â °ÍÀÔ´Ï´Ù.


<?php
require_once 'Zend/Controller/Front.php';
require_once 
'Zend/Controller/Router.php';
require_once 
'Zend/Controller/Plugin/Abstract.php';

class 
MyPlugin extends Zend_Controller_Plugin_Abstract
{
    public function 
routeStartup()
    {
        
$this->getResponse()->appendBody('<p>routeStartup()  ÇÏÁö¸¸ ÄÝ µÇ¾ú½À´Ï´Ù</p>');
    }

    public function 
routeShutdown($request)
    {
        
$this->getResponse()->appendBody('<p>routeShutdown()  ÇÏÁö¸¸ ÄÝ µÇ¾ú½À´Ï´Ù</p>');
    }

    public function 
dispatchLoopStartup($request)
    {
        
$this->getResponse()->appendBody('<p>dispatchLoopStartup()  ÇÏÁö¸¸ ÄÝ µÇ¾ú½À´Ï´Ù</p>');
    }

    public function 
preDispatch($request)
    {
        
$this->getResponse()->appendBody('<p>preDispatch()  ÇÏÁö¸¸ ÄÝ µÇ¾ú½À´Ï´Ù</p>');
    }

    public function 
postDispatch($request)
    {
        
$this->getResponse()->appendBody('<p>postDispatch()  ÇÏÁö¸¸ ÄÝ µÇ¾ú½À´Ï´Ù</p>');
    }

    public function 
dispatchLoopShutdown()
    {
        
$this->getResponse()->appendBody('<p>dispatchLoopShutdown()  ÇÏÁö¸¸ ÄÝ µÇ¾ú½À´Ï´Ù</p>');
    }
}

$controller Zend_Controller_Front::getInstance();
$controller->setControllerDirectory('/path/to/controllers')
           ->
setRouter(new Zend_Controller_Router())
           ->
registerPlugin(new MyPlugin());
$response $controller->dispatch();

echo 
$response;