Zend Framework ±×·³, µðÆúÆ®·Î Á¦°øµÇ´Â Ŭ·¡½º ÀÌ¿ÜÀÇ ¼±ÅûçÇ×µµ ÁغñÇØ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®, ¶ó¿ìÅÍ, ±×¸®°í ¸®½ºÆù½º ¿ÀºêÁ§Æ®µî¿¡ ´ëÇØ¼ ´Ù¸¥ ¼±ÅûçÇ×ÀÌ ÀÖ½À´Ï´Ù.
Zend_Controller_Request_Http
(Àº)´Â,HTTP
ȯ°æ¿¡¼ »ç¿ëÇÏ´Â ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®ÀÔ´Ï´Ù
Zend_Controller_Request_Http
(Àº)´Â µðÆúÆ®ÀÇ ¸®Äù½ºÆ® Ŭ·¡½ºÀ̸ç,
Zend_Controller_Dispatcher
±×¸®°í ÀÌ¿ëµË´Ï´Ù.
Zend_Controller_Request_Http
(Àº)´Â, °ü·ÃÇÏ´Â °ª¿¡ÀÇ ¾×¼¼½º¸¦ ĸ½¶ÈÇÕ´Ï´Ù.
¿¹¸¦ µé¾î ÄÜÆ®·Ñ·¯³ª ¾×¼Ç ¶ó¿ìÅÍÀÇ º¯¼öÀÇ Å°¸íÀ̳ª °ª,
URI
(À¸)·ÎºÎÅÍ ÆÛ½º ÇÑ Ãß°¡ÀÇ ÆÄ¶ó¹ÌÅÍÀÇ °ª µî¿¡ ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Zend_Controller_Request_Http
ÀÇ ÇÁ·Ï½Ã·Î¼ µ¿ÀÛÇÏ´Â °ÍÀ¸·Î,
½´ÆÛ ±Û·Î¹úÀÇ °ª¿¡ ÆÛºí¸¯ ¸â¹ö·Î¼ ¾×¼¼½º Çϰųª
ÇöÀçÀÇ º£À̽º URL
(ÀÌ)³ª ¸®Äù½ºÆ® URI
(À»)¸¦ °ü¸®ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
½´ÆÛ ±Û·Î¹úÀÇ °ªÀº ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®·Î ¼³Á¤ÇÒ ¼ö ¾ø½À´Ï´Ù.
±× ´ë½Å¿¡ setParam/getParam
¸Þ¼Òµå¸¦ »ç¿ëÇϰí,
ÆÄ¶ó¹ÌÅ͸¦ ¼³Á¤ ȤÀº ÃëµæÇÕ´Ï´Ù.
![]() |
½º¹Ù±×·Î¹Ù¸£µ¥ÀÌŸ |
---|---|
|
ƯÁ¤ÀÇ ½´ÆÛ ±Û·Î¹úÇÏ°Ô ¾×¼¼½º ÇÏ·Á¸é ,
ÆÛºí¸¯ ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù.¿¹¸¦ µé¾î,
$_POST['user']
ÀÇ °ªÀ» ÃëµæÇÏ·Á¸é , ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®»ó¿¡¼
getPost('user')
(À»)¸¦ ÄÝ ÇÕ´Ï´Ù.
Zend_Controller_Request_Http
(Àº)´Â,
¼ºê µð·ºÅ丮·Î Zend_Controller_Router_Rewrite
(À»)¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
Zend_Controller_Request_Http
(Àº)´Â ÀÚµ¿ÀûÀ¸·Î º£À̽º URL
(À»)¸¦ °ËÃâÇØ,
±×°ÍÀ» ÀûÀýÈ÷ ¼³Á¤ÇÕ´Ï´Ù.
¿¹¸¦ µé¾î,index.php
(À»)¸¦ À¥ ¼¹öÀÇ ¼ºê µð·ºÅ丮
/projects/myapp/index.php
¿¡ µÎ¾úÀ» °æ¿ì´Â, º£À̽º URL
(rewrite base)
ÇÏ /projects/myapp
(À¸)·Î ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
¸ÅÄ¡ÇÏ´Â ·çÆ®¸¦ ã¾Æ³»±â Àü¿¡, ÀÌ ¹®ÀÚ¿ÀÌ ÆÐ½ºÀÇ ¼±µÎ·ÎºÎÅÍ Á¦°ÅµË´Ï´Ù.
À̰Ϳ¡ ÀÇÇØ, ¸ðµç ·çÆ®¿¡ ºÒÇÊ¿äÇÑ ¹®ÀÚ¸¦ Ãß°¡ÇÒ Çʿ䰡 ¾ø¾îÁý´Ï´Ù.
·çÆ® 'user/:username'
(Àº)´Â,
http://localhost/projects/myapp/user/martel
¹×
http://example.com/user/martel
ÀÇ ¾çÂÊ ¸ðµÎ¿¡ ¼º³É ÇÏ°Ô µË´Ï´Ù.
![]() |
URL ÀÇ °ËÃâÀº ´ë¹®ÀÚ ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÕ´Ï´Ù |
---|---|
ÀÚµ¿ÀûÀÎ º£À̽º URL ÀÇ °ËÃâ 󸮴 ´ë¹®ÀÚ ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÕ´Ï´Ù.±× ¶§¹®¿¡, URL (¿Í)°ú ÆÄÀÏ ½Ã½ºÅÛÀÇ ¼ºê µð·ºÅ丮¸íÀÌ È®½ÇÈ÷ ÀÏÄ¡ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù ( ºñ·Ï Windows ¸Ó½ÅÀ̾ °°½À´Ï´Ù) .´ë¹®ÀÚ ¼Ò¹®ÀÚ°¡ ÀÏÄ¡ÇÏÁö ¾Ê¾Ò´ø °æ¿ì´Â noRoute ¾×¼ÇÀÌ ÄÝ µË´Ï´Ù. |
º£À̽º URL
ÀÇ °ËÃâ¿¡ ½ÇÆÐÇÏ´Â °æ¿ì´Â,
Zend_Controller_Request_Http
Ŭ·¡½º, ȤÀº
Zend_Controller_Front
Ŭ·¡½ºÀÇ
setBaseUrl()
¸Þ¼Òµå¸¦ »ç¿ëÇØ
º£À̽º ÆÐ½º¸¦ µ¡¾²±â ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Á¦ÀÏ °£´ÜÇÑ ¹æ¹ýÀº Zend_Controller_Front
±×¸®°í ¼³Á¤ÇÏ´Â °ÍÀÔ´Ï´Ù.
ÀÌ ¼³Á¤Àº ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¿¡ ÀΰèµË´Ï´Ù.
µ¶ÀÚÀûÀÎ º£À̽º URL
(À»)¸¦ ¼³Á¤ÇÏ´Â ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.
/**
* Zend_Controller_Front
±×¸®°í µ¶ÀÚÀûÀÎ º£À̽º URL
(À»)¸¦ ÁöÁ¤ÇÏ´Â °Í¿¡ ÀÇÇÑ ¸®Äù½ºÆ®ÀÇ µð½ºÆÌÄ¡
*/
$router = new Zend_Controller_Router_Rewrite();
$controller = Zend_Controller_Front::getInstance();
$controller->setControllerDirectory('./application/controllers')
->setRouter($router)
->setBaseUrl('/projects/myapp'); //
º£À̽º URL
(À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù!
$response = $controller->dispatch();
Zend_Controller_Router_Rewrite
(Àº)´Â, Ç¥ÁØÀÇ ¶ó¿ìÅÍÀÔ´Ï´Ù.
·çÆÃÀ̶õ,URI (
º£À̽º URL
(À¸)·ÎºÎÅÍ ÃëµæÇß´Ù URI
ÀÇ ÀϺÎ)
(À»)¸¦ Àü°³ÇØ, ¾î´À ÄÜÆ®·Ñ·¯ÀÇ ¾î´À ¾×¼ÇÀÌ
¸®Äù½ºÆ®¸¦ ó¸®ÇÏ´ÂÁö¸¦ °áÁ¤Çϴ ó¸®ÀÔ´Ï´Ù.
ÄÜÆ®·Ñ·¯ÀÇ °ªÀ̳ª ¾×¼Ç, ±×¸®°í ±× ¿ÜÀÇ ÆÄ¶ó¹ÌÅͰ¡
Zend_Controller_Request_Http
¿ÀºêÁ§Æ®¿¡ Á¤¸®ÇÕ´Ï´Ù.
ÀÌ ¿ÀºêÁ§Æ®¸¦ ó¸®ÇÏ´Â °ÍÀÌ Zend_Controller_Dispatcher_Standard
ÀÔ´Ï´Ù.
·çÆÃÀ» ÇÏ´Â °ÍÀº ÇÑ ¹ø¸¸, Áï ¸®Äù½ºÆ®¸¦ ÃÖÃÊ·Î ¹Þ°í ³ª¼
ÃÖÃÊÀÇ ÄÜÆ®·Ñ·¯¿¡ 󸮰¡ °Ç³×¹ÞÀ» ¶§ »ÓÀÔ´Ï´Ù.
Zend_Controller_Router_Rewrite
(Àº)´Â,mod_rewrite
¹Ù¶÷ÀÇ ±â´ÉÀ»
PHP
¸¸À¸·Î ½ÇÇöµÉ ¼ö ÀÖµµ·Ï(µíÀÌ) ¼³°èµÇ°í ÀÖ½À´Ï´Ù.
ÀÌ Ã³¸®´Â Ruby on Rails
ÀÇ ·çÆÃÀ» ´Ù¼Ò Âü°í·Î Çϰí ÀÖ¾î
À¥ ¼¹öÀÇ URL
°íÃÄ ½á¿¡ °üÇÑ ÀüÁ¦ Áö½ÄÀ» ÇÊ¿ä·Î ÇÏÁö ¾Ê½À´Ï´Ù.
ÀÌÇÏÀÇ ´Ü¼øÇÑ mod_rewrite
·ê (
ÀÇ ¾ðÁ¨°¡)
±×¸®°í µ¿ÀÛÇϵµ·Ï(µíÀÌ) ¼³°èµÇ°í ÀÖ½À´Ï´Ù.
RewriteEngine on
RewriteRule !.(js|ico|gif|jpg|png|css)$ index.php
ȤÀº
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
Rewrite ¶ó¿ìÅ͸¦ IIS À¥ ¼¹ö·Î »ç¿ëÇÏ·Á¸é Isapi_Rewrite (À»)¸¦ Isapi È®Àå ¸ðµâ·Î¼ ÀνºÅç ÇÕ´Ï´Ù.±×¸®°í ´ÙÀ½°ú °°Àº ·êÀ» ±â¼úÇÕ´Ï´Ù.
RewriteRule ^[w/%]*(?:.(?!(?:js|ico|gif|jpg|png|css)$)[w%]*$)? /index.php [I]
![]() |
IIS Isapi_Rewrite |
---|---|
IIS
(À»)¸¦ »ç¿ëÇϸé, |
Lighttpd ÀÇ °æ¿ì´Â, ´ÙÀ½°ú °°Àº ·êÀ» »ç¿ëÇÕ´Ï´Ù.
url.rewrite-once = ( ".*.(js|ico|gif|jpg|png|css)$" => "$0", "" => "/index.php")
Rewrite ¶ó¿ìÅ͸¦ ÀûÀýÈ÷ »ç¿ëÇÏ·Á¸é , ¿ì¼± ±× ÀνºÅϽº¸¦ ÀÛ¼ºÇØ, ´ÙÀ½¿¡ À¯Àú Á¤ÀÇÀÇ ·çÆÃÀ» Ãß°¡ÇØ, ±×°ÍÀ» ÄÜÆ®·Ñ·¯¿¡ ÁÖÀÔÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ÀÌÇÏ¿¡ ÄÚµåÀÇ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.
/*
¶ó¿ìÅ͸¦ ÀÛ¼ºÇÕ´Ï´Ù */
$router = $ctrl->getRouter(); //
µðÆúÆ®·Î rewrite
¶ó¿ìÅ͸¦ µ¹·ÁÁÝ´Ï´Ù
$router->addRoute(
'user',
new Zend_Controller_Router_Route('user/:username', array('controller' => 'user', 'action' => 'info'))
);
RewriteRouter
±×¸®°í °¡Àå Áß¿äÇÑ °ÍÀÌ, À¯Àú Á¤ÀÇÀÇ ·çÆÃÀÔ´Ï´Ù.
À̰ÍÀº,RewriteRouter
ÀÇ addRoute
¸Þ¼Òµå¸¦ ÄÝ ÇØ ÀÛ¼ºÇÕ´Ï´Ù.
ÀÌ ¸Þ¼Òµå¿¡,Zend_Controller_Router_Route
ÀÇ »õ·Î¿î ÀνºÅϽº¸¦ °Ç³×ÁÝ´Ï´Ù.
$router->addRoute('user', new Zend_Controller_Router_Route('user/:username'));
ÃÖÃÊÀÇ ÆÄ¶ó¹ÌÅͰ¡ ÀÌ ·çÆ®ÀÇ À̸§ÀÔ´Ï´Ù.ÇöÀç´Â ´Ù¼Ò ÀåȲ¼ºÀÌ ³²¾Æ ¹ö·Á ÀÖ½À´Ï´Ù¸¸,
Àå·¡´Â,URL
ºäÇ츣ÆÄ Áß(¾È)¿¡¼ À̰ÍÀ» »ç¿ëÇØ, ºä³»¿¡¼ °£´ÜÇϰÔ
URL
(À»)¸¦ »ý¼ºÇÒ ¼ö ÀÖ°Ô µÉ ¿¹Á¤ÀÔ´Ï´Ù.
¿©±â¼ Á¤ÀÇÇÑ ·çÆ®¸¦ »ç¿ëÇÏ´Â ¹æ¹ýµµ ¾Ë¾Æ µÑ Çʿ䰡 ÀÖ°ÚÁö¿ä.
»çÀü¿¡ Á¤ÀÇÇÑ ·çÆ®¸¦ ÃëµæÇÏ·Á¸é ,RewriteRouter
ÀÇ getRoute
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.µÎ¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅÍ´Â,
Zend_Controller_Router_Route
ÀÇ ÀνºÅϽºÀÔ´Ï´Ù.
Zend_Controller_Router_Route
ÀÇ constructor¡¡ ¡¡ ÀÇ ÃÖÃÊÀÇ ÆÄ¶ó¹ÌÅÍ´Â,
±× URL
¿¡ °ü·ÃÁþ´Â ·çÆ®ÀÔ´Ï´Ù.
¿¹¸¦ µé¸é, À§ÀÇ ¿¹·Î ³ªÅ¸³» º¸ÀÎ ·çÆ®´Â http://example.com/user/martel
¿¡ ´ëÀÀÇÕ´Ï´Ù.·çÆ®³»ÀÇ ÄÚ·ÐÀº URL
º¯¼ö¸¦ ÀǹÌÇÕ´Ï´Ù.·çÆÃ¿¡ ¼º°øÇϸé,
ÀÌ·¯ÇÑ º¯¼ö´Â Zend_Controller_Request
¿¡ ÁÖÀԵ˴ϴÙ.
±× ´ÙÀ½Àº Zend_Controller_Request::getParam
(ÀÌ)³ª
Zend_Controller_Action::_getParam
¸Þ¼Òµå·Î ¾×¼¼½º ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
À̹ø ¿¹¿¡¼´Â,username
(ÀÌ)¶ó´Â À̸§ÀÇ ÆÄ¶ó¹ÌÅÍ¿¡
'martel'
±×·¸´Ù°í ÇÏ´Â °ªÀÌ ¼³Á¤µË´Ï´Ù.
![]() |
Á¤ÀÇÀÇ Â÷·Ê |
---|---|
Á¦ÀÏ ¸¶Áö¸·¿¡ ¸ÅÄ¡ÇÑ ·çÆ®°¡ Àû¿ëµÇ¹Ç·Î, ¹ü¿ëÀûÀÎ ·çÆ®´Â ÃÖÃÊ·Î Á¤ÀÇÇϵµ·Ï ÇսôÙ. |
![]() |
Çã°¡µÇ´Â ¹®ÀÚ |
---|---|
ÇöÀçÀÇ ½ÇÀå¿¡¼´Â, º¯¼öÀÇ ½Äº°Àڷμ slash (/) ÀÌ¿ÜÀÇ ¸ðµç ¹®ÀÚ¸¦ »ç¿ë °¡´ÉÇÕ´Ï´Ù¸¸, °¡´ÉÇÑ ÇÑ PHP ÀÇ º¯¼ö·Î »ç¿ë °¡´ÉÇÑ ¹üÀ§ÀÇ ¹®ÀÚ¸¸À» »ç¿ëÇÏ´Â °ÍÀ» °ÇÏ°Ô Ãßõ ÇÕ´Ï´Ù. ÀÌ ½ÇÀåÀº Àå·¡ º¯°æµÉ ¿¹Á¤À̹ǷÎ,(PHP ÀÇ º¯¼ö·Î »ç¿ëÇÒ ¼ö ¾ø´Â ¹®ÀÚ¸¦ ÀÌ¿ëÇϰí ÀÖÀ¸¸é) ¹ö±×¸¦ ÀÏÀ¸Å³ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. |
·çÆ®·Î »ç¿ëµÇ´Â º¯¼ö °¡¿îµ¥,':controller' ¹× ':action' ÀÇ µÑÀº Ưº°ÇÑ Ãë±ÞÀÌ µË´Ï´Ù.ÀÌ·¯ÇÑ Æ¯¼ö º¯¼ö´Â,URL (À¸)·ÎºÎÅÍ ÄÜÆ®·Ñ·¯¿Í ¾×¼ÇÀ» °áÁ¤Çϱâ À§Çؼ »ç¿ëµË´Ï´Ù. ':action' º¯¼ö´Â, ±× ·çÆ® ȤÀº µðÆúÆ® ÆÐ·¯¹ÌÅͷμ Ç×»ó Á¤ÀǵǾî ÀÖÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ':controller' º¯¼ö°¡ ¸¸¾à Á¤ÀǵǾî ÀÖÁö ¾ÊÀº °æ¿ì´Â, µðÆúƮġ·Î¼ IndexController ÇÏÁö¸¸ »ç¿ëµË´Ï´Ù.
![]() |
Ư¼ö º¯¼ö |
---|---|
ÀÌ·¯ÇÑ Æ¯¼ö º¯¼öÀÇ À̸§À» º¯°æÇÒ ¼öµµ ÀÖ½À´Ï´Ù.±× °æ¿ì´Â
|
$router->addRoute(
'user', new Zend_Controller_Router_Route(':controller/:action')
);
ÀÌ ·çÆ®°¡ Á¤Àǵǰí ÀÖÀ» ¶§ ºê¶ó¿ìÀú·Î
'http://example.com/news/latest'
(À»)¸¦ ¼±ÅÃÇϸé,
Zend_Controller_Dispatcher
ÇÏ NewsController
Ŭ·¡½ºÀÇ
latestAction
(À»)¸¦ ±âµ¿ÇÕ´Ï´Ù.
·çÆ®¾ÈÀÇ º¯¼ö¿¡´Â, ¸ðµÎ µðÆúƮġ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
µðÆúƮġ¸¦ ¼³Á¤ÇÏ·Á¸é ,Zend_Controller_Router_Route
ÀÇ constructor¡¡ ¡¡ ÀÇ µÎ¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇÕ´Ï´Ù.
ÀÌ ÆÄ¶ó¹ÌÅÍ´Â ¹è¿ Çü½ÄÀÌ µË´Ï´Ù.¹è¿ÀÇ Å°¿¡ º¯¼ö¸í,
±× Ű¿¡ ´ëÀÀÇÏ´Â °ªÀ¸·Î ÇØ¼ µðÆúƮġ¸¦ ¼³Á¤ÇÕ´Ï´Ù.
$router->addRoute(
'archive', new Zend_Controller_Router_Route('archive/:year', array('year' => 2006))
);
Á¶±Ý ÀÌÇØÇϱ⠾î·Á¿ïÁöµµ ¸ð¸¨´Ï´Ù¸¸, ÀÌ ·çÆ®´Â ¿¹¸¦ µé¸é 'http://example.com/archive/2005' ¹× 'http://example.com/archive' ¿¡ ¸ÅÄ¡ÇÕ´Ï´Ù.ÈÄÀÚÀÇ °æ¿ì, º¯¼ö year ÀÇ °ªÀº 2006 µË´Ï´Ù.
À§ÀÇ ¿¹´Â, ´ÜÁö year º¯¼öÀÇ ³»¿ëÀ» ¸®Äù½ºÆ®¿¡ ÁÖÀÔÇÒ ¸¸ÇÑ °ÍÀÔ´Ï´Ù. ÄÜÆ®·Ñ·¯³ª ¾×¼ÇÀ» ¼³Á¤Çϰí ÀÖÁö ¾Ê¾Ò±â ¶§¹®¿¡, ·çÆÃÀº ÇàÇØÁöÁö ¾Ê½À´Ï´Ù. ÀÌ ¿¹°¡ ¾µ¸ð°¡ ÀÖµµ·Ï(µíÀÌ) ÇÏ·Á¸é , ÄÜÆ®·Ñ·¯¿Í ¾×¼ÇÀÇ µðÆúƮġ¸¦ ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
$router->addRoute(
'archive',
new Zend_Controller_Router_Route('archive/:year', array('year' => 2006, 'controller' => 'archive', 'action' => 'show')
);
ÀÌ ·çÆ®´Â,ArchiveController ÀÇ showAction (À»)¸¦ ½ÇÇàÇÕ´Ï´Ù.
Zend_Controller_Router_Route
¿¡ 3¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅ͸¦ Ãß°¡ÇØ,
º¯¼ö¿¡ °üÇÑ Á¦ÇÑ »çÇ×À» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ Á¦ÇÑÀº, Á¤±Ô Ç¥ÇöÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù.
$router->addRoute(
'archive',
new Zend_Controller_Router_Route('archive/:year', array('year' => 2006), array('year' => 'd+'))
);
![]() |
·çÆ®ÀÇ ¸ÅĪ |
---|---|
Ruby on Rails °ú´Â ´Þ¸®,ZF ÀÇ RewriteRouter ÇÏ 3¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅÍÀÇ Á¦ÇÑÀ» ä¿ìÁö ¾Ê´Â °æ¿ì¿¡µµ ·çÆ®¿¡ ¸ÅÄ¡ÇØ, µðÆúƮġ¸¦ »ç¿ëÇÏ°Ô µÇ¾î ÀÖ½À´Ï´Ù. ±× ¶§¹®¿¡,URL 'http://example.com/archive/test' (Àº)´Â À§ÀÇ ·çÆ®¿¡ ¸ÅÄ¡ÇØ, year ÇÏ 2006 (À¸)·Î ¼³Á¤µË´Ï´Ù.ÀÌ ±â´ÉÀº Àå·¡ º¯°æµÉ ¿¹Á¤À¸·Î, ÀÌ ¸Þ´º¾óÀ» ¾²°í ÀÖ´Â ½ÃÁ¡¿¡¼´Â ¾ÆÁ÷ ³íÀÇÁßÀÔ´Ï´Ù. |
Rewrite
¶ó¿ìÅÍ´Â ¼ºê µð·ºÅ丮³»¿¡¼µµ »ç¿ë °¡´ÉÇÕ´Ï´Ù.
º£À̽º URL
ÀÇ ÀÚµ¿ °ËÃâÀÌ Zend_Controller_Request_Http
¿¡ ÀÇÇØ¼ ÇàÇØÁý´Ï´Ù.
º£À̽º URL
ÀÇ °ËÃâ¿¡ ½ÇÆÐÇÏ´Â °æ¿ì´Â,
Zend_Controller_Request_Http
ÀÇ ¸Þ¼Òµå setBaseUrl()
(À»)¸¦ »ç¿ëÇØ º£À̽º ÆÐ½º¸¦ µ¡¾²±â ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù
(
Ç×7.4.2.3.
¡¸º£À̽º URL
¹× ¼ºê µð·ºÅ丮¡¹
(À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ)
.
Zend_Controller_Router_Rewrite
±×·³, µðÆúÆ®ÀÇ ·çÆ®°¡ Çϳª »çÀü¿¡ Á¤Àǵǰí ÀÖ½À´Ï´Ù.
À̰ÍÀº 'controller/action'
Çü½ÄÀÇ URI
¿¡ ¸ÅÄ¡ÇÕ´Ï´Ù.
°Ô´Ù°¡ ¸ðµâ¸íÀ» ÃÖÃÊÀÇ ÆÐ½º ¿ä¼Ò·Î¼ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.À̰Ϳ¡ ÀÇÇØ,
'module/controller/action
Çü½ÄÀÇ URI
ÇÏÁö¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¶Ç,URI
¿¡ Ãß°¡µÈ ÆÄ¶ó¹ÌÅÍ¿¡µµ µðÆúÆ®·Î ¸ÅÄ¡ÇÕ´Ï´Ù.
·çÆ®°¡ ¾î¶»°Ô ¸ÅÄ¡ÇÏ´ÂÁö, ¿¹¸¦ º¾½Ã´Ù.
//
ÀÌÇÏ¿Í °°ÀÌ µÇ¾î ÀÖ´Â °ÍÀ¸·Î ÇÕ´Ï´Ù
// $ctrl->setControllerDirectory(array(
// 'default' => '/path/to/default/controllers',
// 'news' => '/path/to/blog/controllers',
// 'blog' => '/path/to/blog/controllers'
// ));
¸ðµâ¸¸:
http://example/news
module == news
¹«È¿ÀÎ ¸ðµâ°ú ÄÜÆ®·Ñ·¯¿ÍÀÇ ´ëÀÀ:
http://example/foo
controller == foo
¸ðµâ +
ÄÜÆ®·Ñ·¯:
http://example/blog/archive
module == blog
controller == archive
¸ðµâ +
ÄÜÆ®·Ñ·¯ +
¾×¼Ç:
http://example/blog/archive/list
module == blog
controller == archive
action == list
¸ðµâ +
ÄÜÆ®·Ñ·¯ +
¾×¼Ç +
ÆÄ¶ó¹ÌÅÍ:
http://example/blog/archive/list/sort/alpha/date/desc
module == blog
controller == archive
action == list
sort == alpha
date == desc
µðÆúÆ®ÀÇ ¶ó¿ìÅÍ´Â,
Zend_Controller_Router_Route_Module
¿ÀºêÁ§Æ®¿¡ ¾Æ¹«°Íµµ ¼³Á¤ÇÏÁö ¾Ê°í ÀÛ¼ºÇÑ ÀνºÅϽºÀÔ´Ï´Ù.
//
¶ó¿ìÅÍ v1
(¿Í)°úÀÇ È£È¯¼ºÀ» À§ÇÑ ·çÆ®
$compat = new Zend_Controller_Router_Route_Module();
$this->addRoute('default', $compat);
![]() |
¸ÅÄ¡ÇÑ´Ù URI |
---|---|
|
µðÆúÆ®ÀÇ ·çÆ®¸¦ »ç¿ëÇÏ°í ½ÍÁö ¾ÊÀº °æ¿ì´Â,
removeDefaultRoutes()
±×¸®°í »èÁ¦ÇÕ´Ï´Ù.
//
ȣȯ¼ºÀ» À§ÇÑ µðÆúÆ® ·çÆ®¸¦ »èÁ¦ÇÕ´Ï´Ù
$router->removeDefaultRoutes();
Áö±Ý±îÁöÀÇ ¿¹¿¡¼´Â, ¸ðµÎ µ¿ÀûÀÎ ·çÆ®¸¦ »ç¿ëÇϰí ÀÖ¾ú½À´Ï´Ù. Áï, ƯÁ¤ÀÇ ÆÐÅÏ¿¡ ¸ÅÄ¡ÇÏ´Â °Í¿¡ ´ëÇÑ ·çÆ®ÀÔ´Ï´Ù. ±×·¯³ª, °¡²û ƯÁ¤ÀÇ ·çÆ®¸¦ °íÁ¤ÇØ ¹ö·Á, ÀϺη¯ Á¤±Ô Ç¥Çö ¿£ÁøÀ» ¿òÁ÷ÀÌ°í ½ÍÁö ¾ÊÀº °æ¿ìµµ ÀÖ°ÚÁö¿ä. ±×·² ¶§¿¡´Â Á¤ÀûÀÎ ·çÆ®¸¦ »ç¿ëÇÕ´Ï´Ù.
$loginRoute = new Zend_Controller_Router_Route_Static('login', array('controller' => 'login', 'action' => 'form'));
$router->addRoute('login', $static);
»õ·Î¿î ·çÆ®¸¦ Ãß°¡ÇÒ ¶§¿¡,
Çϳª Çϳª Äڵ带 °íÃÄ ¾²´Â °ÍÀÌ ¾Æ´Ï¶ó ¼³Á¤ ÆÄÀÏÀÇ º¯°æÀ¸·Î ´ëÀÀÇÒ ¼ö ÀÖÀ¸¸é Æí¸®ÇϰÚÁö¿ä.
±×·² ¶§¿¡´Â addConfig()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.±âº»ÀûÀÎ »ç¿ë¹ýÀº,
¿ì¼± Zend_Config
ȣȯÀÇ ¼³Á¤À» ÀÛ¼ºÇØ, ±×°ÍÀ» Äڵ忡 Àоîµé¿©,
±×¸®°í RewriteRouter
¿¡ °Ç³×ÁÖ´Â °ÍÀÔ´Ï´Ù.
/**
*
»ùÇÃÀÇ INI
ÆÄÀÏ
* routes.archive.route = "archive/:year/*"
* routes.archive.defaults.controller = archive
* routes.archive.defaults.action = show
* routes.archive.defaults.year = 2000
* routes.archive.reqs.year = "d+"
*
* routes.news.type = "Zend_Controller_Router_Route_Static"
* routes.news.route = "news"
* routes.news.defaults.controller = "news"
* routes.news.defaults.action = "list"
*/
$config = new Zend_Config_Ini($file);
$router = new Zend_Controller_Router_Rewrite();
$router->addConfig($config, 'routes');
À§ÀÇ ¿¹¿¡¼´Â,INI
ÆÄÀÏÀÇ 'routes'
¼½¼ÇÀ» »ç¿ëÇÏ°í ·çÆ®¸¦ °áÁ¤Çϵµ·Ï,
¶ó¿ìÅÍ·Î ÁöÁ¤Çϰí ÀÖ½À´Ï´Ù.ÀÌ ¼½¼ÇÀÇ Á¦ÀÏ ·¹º§ÀÇ Å°°¡ ·çÆ®¸í¿¡ ´ëÀÀÇÕ´Ï´Ù.
À§ÀÇ ¿¹¶ó¸é 'archive'
(¿Í)°ú 'news'
ÇÏÁö¸¸ À̰Ϳ¡ ÇØ´çÇÕ´Ï´Ù.
·çÆ®ÀÇ °¢ ¿£Æ®¸®¿¡´Â, ÃÖÀúÇÑ 'route'
¿£Æ®¸®¿Í Çϳª ÀÌ»óÀÇ 'defaults'
¿£Æ®¸®°¡ ÇÊ¿äÇÕ´Ï´Ù.¶Ç, ¿É¼ÇÀ¸·Î Çϳª ÀÌ»óÀÇ 'reqs'
('required'
ÀÇ ¾à¾î)
µµ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.¿©±â¼ ÁöÁ¤ÇÑ °ÍÀÌ, °¢°¢
Zend_Controller_Router_Route_Interface
¿ÀºêÁ§Æ®¿¡ ´ëÇÑ Àμö°¡ µË´Ï´Ù.¿É¼ÇÀÇ Å° 'type'
(À»)¸¦ »ç¿ëÇϸé,
ƯÁ¤ÀÇ ·çÆ®·Î »ç¿ëÇÏ´Â ·çÆ® Ŭ·¡½ºÀÇ ÇüŸ¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.µðÆúÆ®¿¡¼´Â, À̰ÍÀº
Zend_Controller_Router_Route
µË´Ï´Ù.À§ÀÇ ¿¹¿¡¼´Â,
'news'
·çÆ®·Î
Zend_Controller_Router_Route_Static
(À»)¸¦ »ç¿ëÇϵµ·Ï(µíÀÌ) Çϰí ÀÖ½À´Ï´Ù.
Zend_Controller_Response_Http
(Àº)´Â,
HTTP
ȯ°æ¿¡¼ÀÇ »ç¿ë¿¡ ÀûÀýÇÑ ¸®½ºÆù½º ¿ÀºêÁ§Æ®ÀÔ´Ï´Ù.
Çì´õÀÇ ¼³Á¤/
Ãëµæ/
¼Ò°ÅÀÇ ±â´ÉÀÌ ÀÖ½À´Ï´Ù.¶Ç,
__toString()
¸Þ¼Òµå¸¦ »ç¿ëÇϰí,
¸®½ºÆù½º º»Ã¼ÀÇ Àü¿¡ ÀüÇì´õ¸¦ Àϰý ¼Û½ÅÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
setHeader()
(Àº)´Â, µÎ °³ÀÇ Àμö¸¦ ¹Þ½À´Ï´Ù.
ÃÖÃʰ¡ Çì´õÀÇ ÇüÅ·Î, ´ÙÀ½ÀÌ Çì´õÀÇ °ªÀÔ´Ï´Ù.3¹øÂ°ÀÇ ¿É¼ÇÀÇ ÆÄ¶ó¹ÌÅ͸¦
true
(À¸)·Î Çϸé, °°Àº ÇüÅÂÀÇ ±âÁ¸ÀÇ Çì´õ¸¦ °Á¦ÀûÀ¸·Î µ¡¾²±âÇÕ´Ï´Ù.