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 ¾×¼Ç ÇïÆÛ¸¦ À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.ÀÌ ÇïÆÛ´Â, ºä¿ÀºêÁ§Æ®¸¦ ÄÜÆ®·Ñ·¯¿¡ ÁÖÀÔÇØ, ºä¸¦ ÀÚµ¿ÀûÀ¸·Î ·»´õ¸µ ÇÕ´Ï´Ù. ¾×¼Ç ÄÜÆ®·Ñ·¯·Î À̰ÍÀ» ¹«È¿·Î ÇÏ·Á¸é , ÀÌÇÏÀÇ ¸î°³ÀÇ ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù.
°³°³ÀÇ ºäÀÇ ·»´õ¸µÀ» ¹«È¿·Î ÇÏ·Á¸é , ´Ü¼øÇϰÔ
|
¾×¼Ç ÄÜÆ®·Ñ·¯ÀÇ 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
±×·³,
ºäÀÇ ÅëÇÕÀ» À§ÇÑ ¾à°£ÀÇ À¯¿¬ÇÑ ±¸Á¶¸¦ Á¦°øÇϰí ÀÖ½À´Ï´Ù.
À̰ÍÀ» ½Ç½ÃÇÏ´Â °ÍÀº initView()
(¿Í)°ú render()
ÀÇ µÎ ¸Þ¼ÒµåÀÔ´Ï´Ù.ÀüÀÚÀÇ ¸Þ¼Òµå´Â ÆÛºí¸¯ ÇÁ·ÓÆÛƼ
$view
ÀÇ Áö¿¬ Àб⸦ ½Ç½ÃÇØ,
ÈÄÀÚÀÇ ¸Þ¼Òµå´Â ¾×¼ÇÀÇ ¿ä±¸¿¡ ÀǰÅÇØ ºä¸¦ ·»´õ¸µ ÇÕ´Ï´Ù.
±× ¶§¿¡, µð·ºÅ丮 °èÃþÀ» ±âÃÊ·Î ½ºÅ©¸³Æ®ÀÇ ÆÐ½º¸¦ °áÁ¤ÇÕ´Ï´Ù.
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/
ÇÏÁö¸¸ ÀÌ¿ëµË´Ï´Ù.
±× Áß¿¡, ºä½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â ÄÜÆ®·Ñ·¯¸í¿¡ ±Ù°ÅÇÑ À̸§ÀÇ µð·ºÅ丮°¡ ÀÛ¼ºµË´Ï´Ù.
render()
ÀÇ ¼¸íÀº ´ÙÀ½°ú °°½À´Ï´Ù.
<?php
string render(string $action = null, string $name = null, bool $noController = false);
render()
(Àº)´Â ºä½ºÅ©¸³Æ®¸¦ ·»´õ¸µ ÇÕ´Ï´Ù.
Àμö¸¦ »ý·« ÇßÀ» °æ¿ì´Â,[controller]/[action].phtml
ÇÏÁö¸¸ ÁöÁ¤µÈ °ÍÀ¸·Î °£ÁÖÇÕ´Ï´Ù(.phtml
ÇÏ $viewSuffix
ÇÁ·ÓÆÛƼÀÇ °ªÀÔ´Ï´Ù).
$action
(À»)¸¦ ÁöÁ¤Çϸé,[controller]
µð·ºÅ丮¿¡ ÀÖ´Â ±× À̸§ÀÇ ÅÛÇø´À» ·»´õ¸µ ÇÕ´Ï´Ù.
[controller]
µð·ºÅ丮¸¦ »ç¿ëÇÏÁö ¾Ê°Ô ÇÏ·Á¸é ,
$noController
¿¡ true (À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
ÅÛÇø´À» ·»´õ¸µ ÇÑ °á°ú´Â ¸®½ºÆù½º ¿ÀºêÁ§Æ®¿¡ °Ý³³µË´Ï´Ù.
¸®½ºÆù½º ¿ÀºêÁ§Æ®¾ÈÀÇ,
ƯÁ¤ÀÇ À̸§À» ºÙÀÎ ºÎºÐ ¿¡ °Ý³³ÇÏ°í ½ÍÀº °æ¿ì´Â,
$name
ÀÇ °ªÀ» ÁöÁ¤ÇÕ´Ï´Ù.
![]() |
ÁÖÀÇ |
---|---|
ÄÜÆ®·Ñ·¯³ª ¾×¼ÇÀÇ À̸§¿¡´Â ´Ü¶ôÁö¾î ¹®ÀÚ
('_' (ÀÌ)³ª '.','-') (À»)¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖÀ¸¹Ç·Î,
render() (Àº)´Â ½ºÅ©¸³Æ®¸íÀ» °áÁ¤ÇÒ ¶§¿¡ ÀÌ·¯ÇÑ ¹®ÀÚ¸¦
'-' ¿¡ Á¤±ÔÈÇÕ´Ï´Ù.³»ºÎÀûÀ¸·Î´Â,
µð½ºÆÖÃÄ·Î ¼³Á¤µÇ¾î ÀÖ´Â ´Ü¾î³ª ÆÐ½ºÀÇ ´Ü¶ô ¹®ÀÚ¸¦ Á¤±ÔȽÿ¡ ÀÌ¿ëÇÕ´Ï´Ù.
µû¶ó¼, |
¿¹¸¦ º¾½Ã´Ù.
<?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', null, true);
// 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();
}
}
¾×¼¼½º¿ë ¸Þ¼Òµå³ª ºäÀÇ ÅëÇÕ¿ë ¸Þ¼Òµå À̿ܿ¡µµ,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()
(À»)¸¦ »ç¿ëÇÕ´Ï´Ù.
¾×¼Ç ÄÜÆ®·Ñ·¯¸¦ ÀÛ¼ºÇÏ·Á¸é , ¹Ýµå½Ã
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;
}
}
ÀÌ ÀåÀÇ Á¤º¸¸¦ ±âÃÊ·Î, °¢°¢ÀÇ ±â´ÉÀÇ À¯¿¬¼ºÀ» ±âÃÊ·Î ÇØ¼ ¾îÇø®ÄÉÀ̼ÇÀ̳ª »çÀÌÆ®ÀÇ ¿ä±¸¿¡ ÀÀÇÑ ÄÜÆ®·Ñ·¯¸¦ ÀÛ¼ºÇØ ³ª°¡¸é ÁÁÀ» °ÍÀÔ´Ï´Ù.