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' ÇÏÁö¸¸ Á¤Àǵǰí ÀÖ½À´Ï´Ù.
¹°·Ð À̿ܿ¡µµ ¸¹Àº ±â´ÉÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ÃʱâÈ ¾×¼ÇÀ» µ¶ÀÚÀûÀ¸·Î ÀÛ¼ºÇϰųª ¾×¼ÇÀ» ÁöÁ¤ÇÏÁö ¾Ê¾Ò´Ù ( ȤÀº ¹«È¿ÀÎ ¾×¼ÇÀ» ÁöÁ¤Çß´Ù) ¶§¿¡ ÄÝ µÇ´Â µðÆúÆ®ÀÇ ¾×¼ÇÀ» ÁöÁ¤Çϰųª µð½ºÆÌÄ¡ÀÇ ÀüÈÄ¿¡ ½ÇÇàµÇ´Â ÈÅÀ» ÁöÁ¤Çϰųª ´Ù¾çÇÑ ÇïÆÛ ¸Þ¼Òµå¸¦ »ç¿ëÇϰųª¶ó°í Çß´ø °ÍÀÌ ÀÖ½À´Ï´Ù. ÀÌ Àå¿¡¼´Â, ¾×¼Ç ÄÜÆ®·Ñ·¯ÀÇ ±â´ÉÀÇ °³¿ä¸¦ ¼³¸íÇÕ´Ï´Ù.
¾×¼Ç ÄÜÆ®·Ñ·¯ÀÇ 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'
));
}
}
Zend_Controller_Action ¿¡´Â, ¸®Äù½ºÆ® µÈ ¾×¼ÇÀÇ ÀüÈÄ¿¡ ÄÝ µÇ´Â µÎ ¸Þ¼Òµå°¡ ÀÖ½À´Ï´Ù.±×°ÍÀÌ preDispatch() (¿Í)°ú postDispatch() ÀÔ´Ï´Ù. À̰͵éÀº ´Ù¾çÇÑ Àå¸é¿¡¼ Ȱ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ¾×¼ÇÀ» ½ÇÇàÇϱâ Àü¿¡ ÀÎÁõ Á¤º¸³ª ACL (À»)¸¦ Á¶»çÇϰųª (preDispatch() Áß(¾È)¿¡¼ _forward() (À»)¸¦ ÄÝ Çϸé, ±× ¾×¼ÇÀÇ Ã³¸®´Â ³¯¾Æ°©´Ï´Ù) , ÀÛ¼ºÇÑ ÄÁÅÙÃ÷¸¦ (postDispatch() ±×¸®°í) Àü»çÀÌÆ® °øÅëÀÇ ÅÛÇø´¿¡ ¹èÄ¡Çϰųª¶ó°í Çß´ø °ÍÀÌ »ý°¢ÇÒ ¼ö ÀÖ½À´Ï´Ù.
´Ù¾çÇÑ ¿ÀºêÁ§Æ®³ª º¯¼ö°¡ ¿ÀºêÁ§Æ®¿¡ µî·ÏµÇ¾î ÀÖ¾î °¢°¢ ¾×¼¼½º¿ë ¸Þ¼Òµå°¡ ÁغñµÇ¾î ÀÖ½À´Ï´Ù.
¸®Äù½ºÆ® ¿ÀºêÁ§Æ®: 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) (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.
¾×¼¼½º¿ë ¸Þ¼Òµå À̿ܿ¡µµ,Zend_Controller_Action ¿¡´Â ¸î°³ÀÇ À¯Æ¿¸®Æ¼ ¸Þ¼Òµå°¡ ÁغñµÇ¾î ÀÖ½À´Ï´Ù. À̰͵éÀ» »ç¿ëÇϰí, ¾×¼Ç ¸Þ¼Òµå ( ȤÀº µð½ºÆÌÄ¡ ÀüÈÄÀÇ ÈÅ ¸Þ¼Òµå) (À¸)·ÎÀÇ ´Ù¾çÇÑ ÀÛ¾÷À» ½Ç½ÃÇÕ´Ï´Ù.
_forward($action, $controller = null, $module = null, array $params = null): ´Ù¸¥ ¾×¼ÇÀ» ½ÇÇàÇÕ´Ï´Ù.preDispatch() Áß(¾È)¿¡¼ ÄÝ Çϸé, ¸®Äù½ºÆ® µÇ°í ÀÖ´ø ¾×¼ÇÀº ³¯¾Æ°¡ »õ·Î¿î ¾×¼ÇÀ» ½ÇÇàÇÕ´Ï´Ù.±× ÀÌ¿ÜÀÇ °æ¿ì´Â, ÇöÀçÀÇ ¾×¼ÇÀÇ Ã³¸®¸¦ ³¡¸¶Ä£ ´ÙÀ½¿¡ _forward() ±×¸®°í ÁöÁ¤ÇÑ ¾×¼ÇÀ» ½ÇÇàÇÕ´Ï´Ù.
_redirect($url, $code = 302): ´Ù¸¥ Àå¼Ò¿¡ ¸®µð·ºÆ® ÇÕ´Ï´Ù.ÀÌ ¸Þ¼Òµå¿¡´Â,URL ¿Ü¿¡ ¿É¼ÇÀ¸·Î HTTP »óÅ Äڵ带 ÁöÁ¤ÇÕ´Ï´Ù. ¸®µð·ºÆ®´Â ±× ÀÚ¸®¿¡¼ °ð ÇàÇØÁ® ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀº °Å±â¼ Á¤ÁöÇÕ´Ï´Ù.
»óÅ Äڵ带 ÁöÁ¤ÇßÀ» °æ¿ì´Â, ¸®µð·ºÆ®½Ã¿¡ PHP ÀÇ header() Ä¿¸àµå·Î Äڵ尡 »ç¿ëµË´Ï´Ù.