MVC ÄÄÆÛ³ÍÆ®ÀÇ API (Àº)´Â ÀÌÀü°ú´Â º¯°æµÇ¾ú½À´Ï´Ù. ÃʱâÀÇ ¹öÁ¯À¸·ÎºÎÅÍ Zend Framework (À»)¸¦ »ç¿ëÇϰí ÀÖ¾îÁö´Â ºÐÀº, ÀÌÇÏÀÇ °¡ÀÌµå ¶óÀο¡ µû¶ó¼ ½ºÅ©¸³Æ®¸¦ º¯°æÇØ, »õ·Î¿î ±¸Á¶¿¡ ´ëÀÀ½ÃÄÑ ÁÖ¼¼¿ä.
Àüȸ º¯°æµÈ, °¡Àå ±âº»ÀûÀÎ MVC ÄÄÆÛ³ÍÆ®ÀÇ »ç¿ë¹ýÀº, ±×´ë·Î °°½À´Ï´Ù.
require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run('/path/to/controllers');
±×·¯³ª, µð·ºÅ丮 ±¸Á¶¸¦ Àç°ËÅäÇØ, ¸î°³ÀÇ ÄÄÆÛ³ÍÆ®°¡ »èÁ¦µÇ¾ú½À´Ï´Ù. ¶Ç, À̸§ÀÌ º¯°æµÇ°Å³ª »õ·Ó°Ô Ãß°¡µÈ °Íµµ ÀÖ½À´Ï´Ù.ÀÌÇÏ¿¡ ±×°ÍµéÀ» Á¤¸®ÇÕ´Ï´Ù.
Zend_Controller_Router
(Àº)´Â »èÁ¦µÇ¾ú½À´Ï´Ù. ´ë½Å¿¡ rewrite
¶ó¿ìÅ͸¦ »ç¿ëÇØ ÁÖ¼¼¿ä.
Zend_Controller_RewriteRouter
ÇÏ Zend_Controller_Router_Rewrite
(ÀÌ)¶ó´Â
À̸§À¸·Î ¹Ù²î¾î, ÀÌ Ã¼Á¦ÀÇ Ç¥ÁØ ¶ó¿ìÅÍ¿¡ °Ý»óµÇ¾ú½À´Ï´Ù. Zend_Controller_Front
(Àº)´Â,
ƯÈ÷ ´Ù¸¥ ¶ó¿ìÅ͸¦ ÁöÁ¤ÇÏÁö ¾Ê´Â ÇÑ ÀÌ ¶ó¿ìÅ͸¦ µðÆúÆ®·Î »ç¿ëÇÕ´Ï´Ù.
rewrite ¶ó¿ìÅÍ·Î »ç¿ëÇÏ´Â, »õ·Î¿î ·çÆ® Ŭ·¡½º°¡ Ãß°¡µÇ¾ú½À´Ï´Ù.À̸§Àº Zend_Controller_Router_Route_Module
ÀÔ´Ï´Ù.
À̰ÍÀº MVC ±×¸®°í »ç¿ëÇÏ´Â µðÆúÆ®ÀÇ ·çÆ® ¿Ü¿¡, Ç×7.7.
¡¸¸ðµâ·¯ µð·ºÅ丮 ±¸Á¶ÀÇ ±Ô¾àÀÇ »ç¿ë¡¹ (À»)¸¦ ¼Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù.
Zend_Controller_Router_StaticRoute
ÇÏ Zend_Controller_Router_Route_Static
(ÀÌ)¶ó´Â
À̸§À¸·Î ¹Ù²î¾ú½À´Ï´Ù.
Zend_Controller_Dispatcher
ÇÏ Zend_Controller_Dispatcher_Standard
(ÀÌ)¶ó´Â
À̸§À¸·Î ¹Ù²î¾ú½À´Ï´Ù.
Zend_Controller_Action::_forward()
ÀÇ Àμö°¡ ¹Ù²î¾ú½À´Ï´Ù.
»õ·Î¿î ¼¸íÀº ´ÙÀ½°ú °°½À´Ï´Ù.
final protected function _forward($action, $controller = null, $module = null, array $params = null);
$action
(Àº)´Â Ç×»ó ÇʼöÀÔ´Ï´Ù. ÄÜÆ®·Ñ·¯¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì´Â,
ÇöÀçÀÇ ÄÜÆ®·Ñ·¯³»ÀÇ ¾×¼ÇÀÌ´Ù°í º¸ÀÔ´Ï´Ù. $controller
(À»)¸¦ ÁöÁ¤ÇÏÁö
¾Ê¾Ò´ø °æ¿ì´Â, $module
(Àº)´Â Ç×»ó ¹«½ÃµË´Ï´Ù. ¸¶Áö¸·À¸·Î,$params
±×¸®°í
ÁöÁ¤ÇÑ ÀÓÀÇÀÇ °ªÀÌ ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¿¡ Ãß°¡µË´Ï´Ù. ÄÜÆ®·Ñ·¯³ª ¸ðµâÀº ºÒÇÊ¿äÇÏÁö¸¸ ÆÄ¶ó¹ÌÅÍ´Â °Ç³×ÁÖ°í ½Í´Ù°í ÇÏ´Â °æ¿ì´Â, ÄÜÆ®·Ñ·¯³ª
¸ðµâ¿¡ null (À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
MVC ÄÄÆÛ³ÍÆ®ÀÇ ±âº»ÀûÀÎ ºÎºÐÀº º¯ÇÏÁö ¾Ê½À´Ï´Ù. ´ÙÀ½ÀÇ ¾î´À ¹æ¹ýµµ »ç¿ë °¡´ÉÇÕ´Ï´Ù.
require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run('/path/to/controllers');
/* --
¶ó¿ìÅ͸¦ ÀÛ¼ºÇÕ´Ï´Ù -- */
$router = new Zend_Controller_RewriteRouter();
$router->addRoute('user', 'user/:username', array('controller' => 'user',
'action' => 'info'));
/* --
¶ó¿ìÅ͸¦ ÄÜÆ®·Ñ·¯·Î ¼³Á¤ÇÕ´Ï´Ù -- */
$ctrl = Zend_Controller_Front::getInstance();
$ctrl->setRouter($router);
/* --
ÄÜÆ®·Ñ·¯ÀÇ µð·ºÅ丮¸¦ ¼³Á¤ÇØ, µð½ºÆÌÄ¡ ÇÕ´Ï´Ù -- */
$ctrl->setControllerDirectory('/path/to/controllers');
$ctrl->dispatch();
¸®½ºÆù½º ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇϰí, ÄÁÅÙÃ÷¿Í Çì´õ¸¦ ÃëµæÇÏ´Â °ÍÀ» Ãßõ ÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ¾îÇø®ÄÉÀ̼dz»¿¡¼ º¸´Ù À¯¿¬ÇÑ Ãâ·Â ¼½ÄÀÇ
º¯È¯ ( ¿¹¸¦ µé¾î XHTML (Àº)´Â ¾Æ´Ï°í JSON (ÀÌ)³ª XML (À»)¸¦ »ç¿ëÇÏ´Â µî) ÇÏÁö¸¸ ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. µðÆúÆ®¿¡¼´Â,dispatch()
(Àº)´Â
¸®½ºÆù½ºÀÇ ·»´õ¸µÀ» ½Ç½ÃÇØ, Çì´õ¿Í ·»´õ¸µ µÈ ³»¿ëÀÇ ¾çÂÊ ¸ðµÎ¸¦ ¼Û½ÅÇÕ´Ï´Ù. ÇÁ·±Æ® ÄÜÆ®·Ñ·¯·ÎºÎÅÍ returnResponse()
(À»)¸¦
»ç¿ëÇÏ°í ¸®½ºÆù½º¸¦ µ¹·ÁÁÖ¾î, ¸®½ºÆù½ºÀÇ ·»´õ¸µÀ» µ¶ÀÚÀûÀ¸·Î ½Ç½ÃÇÒ ¼öµµ ÀÖ½À´Ï´Ù. Àå·¡ÀÇ ¹öÁ¯ÀÇ ÇÁ·±Æ® ÄÜÆ®·Ñ·¯¿¡¼´Â, ¸®½ºÆù½º ¿ÀºêÁ§Æ®¿¡
Ãâ·Â ¹öÆÛ¸µÀ» »ç¿ëÇÒ ¿¹Á¤ÀÔ´Ï´Ù.
Áö±Ý±îÁöÀÇ API ¿¡ °¡¼¼ÇØ ¸¹Àº ±â´ÉÀÌ Ãß°¡µÇ°í ÀÖ½À´Ï´Ù. Ãß°¡µÈ ±â´É¿¡ ´ëÇØ¼´Â ¹®¼¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
ÃÖ´ëÀÇ º¯°æÁ¡Àº, ¸¹Àº ÄÄÆÛ³ÍÆ®·Î ¼ºê Ŭ·¡½ºÈ¿¡ ÀÇÇÑ È®ÀåÀÌ °¡´ÉÇÏ°Ô µÈ °ÍÀÔ´Ï´Ù.ÀÌÇÏ¿¡ Æ÷ÀÎÆ®¸¦ Á¤¸®ÇÕ´Ï´Ù.
Zend_Controller_Front::dispatch()
(Àº)´Â, µðÆúÆ®·Î
¸®½ºÆù½º ¿ÀºêÁ§Æ®ÀÇ ¿¹¿Ü¸¦ Æ®·¦ ÇÕ´Ï´Ù. ¿¹¿ÜÀÇ ³»¿ëÀº ·»´õ¸µ ÇÏÁö ¾Ê½À´Ï´Ù.À̰Ϳ¡ ÀÇÇØ, ½Ã½ºÅÛ¿¡ ´ëÇÑ ±â¹Ð Á¤º¸°¡ ·»´õ¸µ µÇ¾î
¹ö¸®´Â °ÍÀ» ¸·½À´Ï´Ù. ÀÌ °Åµ¿À» º¯°æÇÏ·Á¸é ¸î°³ÀÇ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù.
ÇÁ·±Æ® ÄÜÆ®·Ñ·¯·Î throwExceptions()
(À»)¸¦ ¼³Á¤ÇÕ´Ï´Ù.
$front->throwExceptions(true);
¸®½ºÆù½º ¿ÀºêÁ§Æ®·Î renderExceptions()
(À»)¸¦ ¼³Á¤ÇÕ´Ï´Ù.
$response->renderExceptions(true);
$front->setResponse($response);
$front->dispatch();
//
ȤÀº
$front->returnResponse(true);
$response = $front->dispatch();
$response->renderExceptions(true);
echo $response;
Zend_Controller_Dispatcher_Interface::dispatch()
(Àº)´Â,
µð½ºÆÖÃÄ ÅäÅ«Àº ¾Æ´Ï°í Ç×7.1.2.
¡¸¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¡¹ ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÏ°Ô µÇ¾ú½À´Ï´Ù.
Zend_Controller_Router_Interface::route()
(Àº)´Â,
µð½ºÆÖÃÄ ÅäÅ«Àº ¾Æ´Ï°í Ç×7.1.2.
¡¸¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¡¹ ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÏ°Ô µÇ¾ú½À´Ï´Ù.
Zend_Controller_Action
ÀÇ º¯°æÁ¡Àº ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù.
constructor¡¡ ¡¡ ÀÌ ¹Þ¾ÆµéÀÌ´Â Àμö´Â Zend_Controller_Request_Abstract
$request
, Zend_Controller_Response_Abstract
$response
¹× array $params (optional)
ÀÇ
¼¼ °³°¡ µÇ¾ú½À´Ï´Ù. Zend_Controller_Action::__construct()
(Àº)´Â,
À̰͵éÀ» »ç¿ëÇØ ¸®Äù½ºÆ®³ª ¸®½ºÆù½º, ±×¸®°í ¿ÀºêÁ§Æ®ÀÇ invokeArgs ÇÁ·ÓÆÛƼ¸¦ ÁöÁ¤ÇÕ´Ï´Ù. constructor¡¡
¡¡ À» ¿À¹ö¶óÀ̵å(override) ÇÏ´Â °ÍÀ¸·Î, ÀÌ °Åµ¿À» ¼Ò¸Á°ú °°ÀÌ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÑÃþ ´õ ÁÁÀº °Í¿¡,init()
¸Þ¼Òµå¸¦
»ç¿ëÇØ ÀνºÅϽºÀÇ ¼³Á¤À» ÀÚÀ¯·Ó°Ô ½Ç½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼Òµå´Â, constructor¡¡ ¡¡ À¸·ÎÀÇ Ã³¸®ÀÇ ¸¶Áö¸·¿¡
ÄÝ µË´Ï´Ù.
run()
ÇÏ final ¸Þ¼Òµå´Â ¾Æ´Ï°Ô µÇ¾ú½À´Ï´Ù. ±×·¯³ª, ÀÌ ¸Þ¼Òµå´Â
ÀÌ¹Ì ÇÁ·±Æ® ÄÜÆ®·Ñ·¯¿¡¼´Â »ç¿ëµÇÁö ¾Ê½À´Ï´Ù. À̰ÍÀº, Ŭ·¡½º¸¦ ÆäÀÌÁö ÄÜÆ®·Ñ·¯·Î¼ »ç¿ëÇÏ´Â °æ¿ì¿¡°Ô¸¸ »ç¿ëÇÕ´Ï´Ù. ¿É¼ÇÀÇ
Àμö Zend_Controller_Request_Abstract $request
¹× Zend_Controller_Response_Abstract
$response
(À»)¸¦ ¹Þ½À´Ï´Ù.
indexAction()
(À»)¸¦ Á¤ÀÇÇÒ ÇÊ¿ä´Â ¾ø¾îÁ³½À´Ï´Ù. ±×·¯³ª,
µðÆúÆ®ÀÇ ¾×¼ÇÀ¸·Î¼ Á¤ÀÇÇØ µÎ´Â °ÍÀ» Ãßõ ÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ,RewriteRouter (¿Í)°ú ¾×¼Ç ÄÜÆ®·Ñ·¯·Î µðÆúÆ®ÀÇ
¾×¼Ç ¸Þ¼Òµå¸¦ µû·Î µû·Î ÁöÁ¤ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
__call()
(À»)¸¦ ¿À¹ö¶óÀ̵å(override) Çϰí, ¹ÌÁ¤µµ¸®ÀÇ
¾×¼ÇÀÌ ÀÚµ¿ÀûÀ¸·Î 󸮵ǵµ·Ï(µíÀÌ) ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
_redirect()
¿¡´Â ¿É¼ÇÀ¸·Î µÎ¹øÂ°, 3¹øÂ°ÀÇ Àμö°¡ Ãß°¡µÇ¾ú½À´Ï´Ù.
µÎ¹øÂ°ÀÇ Àμö´Â ¸®µð·ºÆ®½Ã¿¡ µ¹·ÁÁØ´Ù HTTP ÄÚµåÀÔ´Ï´Ù. 3¹øÂ°ÀÇ Àμö $prependBase
(À»)¸¦
»ç¿ëÇϸé, ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¿¡ µî·ÏÇÑ º£À̽º URL (À»)¸¦ URL ÀÇ Àü¿¡ ¿¬°áÇÏ´Â °ÍÀ» Áö½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÇÁ·ÓÆÛƼ _action
(Àº)´Â ¼³Á¤µÇÁö ¾Ê°Ô µÇ¾ú½À´Ï´Ù. ÀÌ ÇÁ·ÓÆÛƼÀÇ
³»¿ëÀº Zend_Controller_Dispatcher_Token
(À̾ú)¿´Áö¸¸,
À̰ÍÀº ÇöÀçÀÇ ¹öÁ¯¿¡´Â ´õÀÌ»ó Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ÅäÅ«ÀÇ À¯ÀÏÇÑ ¸ñÀûÀº, ¿ä±¸µÈ ÄÜÆ®·Ñ·¯³ª ¾×¼Ç, URL ÆÄ¶ó¹ÌÅÍ¿¡ ´ëÇÑ
Á¤º¸¸¦ Á¦°øÇÏ´Â °ÍÀ̾ú½À´Ï´Ù. À̰͵éÀº ÇöÀç´Â ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®·ÎºÎÅÍ ´ÙÀ½°ú °°ÀÌ Çϰí ÃëµæÇÒ ¼ö ÀÖ°Ô µÇ¾î ÀÖ½À´Ï´Ù.
//
¿ä±¸µÈ ÄÜÆ®·Ñ·¯¸íÀ» ÃëµæÇÕ´Ï´Ù.
//
±× ¶§¿¡´Â $this->_action->getControllerName()
(À»)¸¦ »ç¿ëÇÕ´Ï´Ù.
//
ÀÌÇÏÀÇ ¿¹¿¡¼´Â getRequest()
(À»)¸¦ »ç¿ëÇϰí ÀÖ½À´Ï´Ù¸¸, Á÷Á¢ $_request
ÇÁ·ÓÆÛƼ¿¡
//
¾×¼¼½º ÇØµµ ±¦Âú½À´Ï´Ù.´ÜÁö getRequest()
(À»)¸¦ »ç¿ëÇÏ´Â °ÍÀ» Ãßõ ÇÕ´Ï´Ù.
//
¹¯´Â ÀÖ¾î °ÍÀº, ģŬ·¡½º°¡ ÀÌ ¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵å(override) ÇØ °Åµ¿À» º¯°æÇϰí ÀÖÀ»Áöµµ ¸ð¸£±â ¶§¹®ÀÔ´Ï´Ù.
$controller = $this->getRequest()->getControllerName();
//
¿ä±¸µÈ ¾×¼Ç¸íÀ» ÃëµæÇÕ´Ï´Ù.
//
±× ¶§¿¡´Â $this->_action->getActionName()
(À»)¸¦ »ç¿ëÇÕ´Ï´Ù.
$action = $this->getRequest()->getActionName();
//
¸®Äù½ºÆ® ÆÄ¶ó¹ÌÅ͸¦ ÃëµæÇÕ´Ï´Ù.
//
À̰ÍÀº º¯ÇÏÁö ¾Ê½À´Ï´Ù._getParams()
¸Þ¼Òµå ¹× _getParam()
¸Þ¼Òµå´Â
//
ÇöÀç´Â ´Ü¼øÇÑ ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¿¡ÀÇ ÇÁ·Ï½ÃÀÔ´Ï´Ù.
$params = $this->_getParams();
$foo = $this->_getParam('foo', 'default'); //
ÆÄ¶ó¹ÌÅÍ 'foo'
(À»)¸¦ ÃëµæÇÕ´Ï´Ù.¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì´Â
//
µðÆúƮġ 'default'
(À»)¸¦ ¼³Á¤ÇÕ´Ï´Ù.
noRouteAction()
(Àº)´Â »èÁ¦µÇ¾ú½À´Ï´Ù. Á¸ÀçÇÏÁö ¾Ê´Â ¾×¼Ç
¸Þ¼Òµå¸¦ Ãë±ÞÇÏ·Á¸é , __call()
(À»)¸¦ »ç¿ëÇØ µðÆúÆ®ÀÇ ¾×¼Ç¿¡ À¯µµÇÕ´Ï´Ù.
public function __call($method, $args)
{
//
Á¸ÀçÇÏÁö ¾Ê´Â´Ù 'Action'
¸Þ¼Òµå°¡ ¿ä±¸µÇ¾úÀ» °æ¿ì¿¡,
//
±×°ÍÀ» µðÆúÆ®ÀÇ ¾×¼Ç¿¡ °Ç³×ÁÝ´Ï´Ù.
if ('Action' == substr($method, -6)) {
return $this->defaultAction();
}
throw new Zend_Controller_Exception('
¹«È¿ÀÎ ¸Þ¼Òµå È£ÃâÀÔ´Ï´Ù');
}
Zend_Controller_RewriteRouter::setRewriteBase()
(Àº)´Â
»èÁ¦µÇ¾ú½À´Ï´Ù.´ë½Å¿¡ Zend_Controller_Front::setBaseUrl()
(À»)¸¦
»ç¿ëÇØ ÁÖ¼¼¿ä ( ȤÀº, ¸®Äù½ºÆ® Ŭ·¡½º¸¦ »ç¿ëÇϰí ÀÖ´Â °æ¿ì´Â Zend_Controller_Request_Http::setBaseUrl()
(À»)¸¦ »ç¿ëÇÕ´Ï´Ù) .
Zend_Controller_Plugin_Interface
ÇÏ Zend_Controller_Plugin_Abstract
(À¸)·Î
¿Å°ÜÁ³½À´Ï´Ù. ¸ðµç ¸Þ¼Òµå´Â, µð½ºÆÖÃÄ ÅäÅ«Àº ¾Æ´Ï°í Ç×7.1.2.
¡¸¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¡¹ (À»)¸¦ ±³È¯ÇÏ°Ô µÇ¾ú½À´Ï´Ù.