7.7. ¸ðµâ·¯ µð·ºÅ丮 ±¸Á¶ÀÇ ±Ô¾àÀÇ »ç¿ë

7.7.1. µµÀÔ

¸ðµâ·¯ µð·ºÅ丮 ±¸Á¶ÀÇ ±Ô¾à (The Conventional Modular directory structure) ¿¡ ÀÇÇØ, ´Ù¾çÇÑ MVC ¾îÇø®ÄÉÀ̼ÇÀ» Àڱ⠿ϰáÇÑ ´ÜÀ§·Î Á¤¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶Ç, ±×°ÍÀ» ´Ù¾çÇÑ ÇÁ·±Æ® ÄÜÆ®·Ñ·¯·Î ÀçÀÌ¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ÀÌ µð·ºÅ丮 ±¸Á¶´Â, ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.


docroot/
    index.php
application/
    controllers/
        IndexController.php
        FooController.php
    blog/
        controllers/
            IndexController.php
        models/
        views/
    news/
        controllers/
            IndexController.php
            ListController.php
        models/
        views/

ÀÌ »ý°¢¿¡¼­´Â, ¸ðµâ¸íÀÌ, ±× Áß¿¡ Æ÷ÇԵǴ ÄÜÆ®·Ñ·¯ÀÇ ÇÁ·¹ÇȽº°¡ µË´Ï´Ù. À§ÀÇ ¿¹¿¡´Â, ¼¼ °³ÀÇ ¸ðµâ ÄÜÆ®·Ñ·¯ 'Blog_IndexController' ,'News_IndexController' ¹× 'News_ListController' ÇÏÁö¸¸ Æ÷ÇԵ˴ϴÙ.¶Ç, ±Û·Î¹ú ÄÜÆ®·Ñ·¯µµ 'IndexController' (¿Í)°ú 'FooController' ÀÇ µÎ °³°¡ Á¤Àǵǰí ÀÖ½À´Ï´Ù. À̰͵éÀº À̸§ °ø°£¿¡ ¼ÓÇÏÁö ¾Ê½À´Ï´Ù.ÀÌ ÀåÀÇ »ùÇÿ¡¼­´Â, ¿©±â¼­ ³ªÅ¸³» º¸ÀÎ µð·ºÅ丮 ±¸Á¶¸¦ »ç¿ëÇÕ´Ï´Ù.

±×·¯¸é,Zend Framework ÀÇ MVC ÄÄÆÛ³ÍÆ®¸¦ »ç¿ëÇØ ÀÌ·¯ÇÑ µð·ºÅ丮 ¹èÄ¡¸¦ ½ÇÀåÇÏ·Á¸é ¾î¶»°Ô Çϸé ÁÁÀº °ÍÀϱî¿ä?

7.7.2. ¸ðµâ ÄÜÆ®·Ñ·¯ µð·ºÅ丮ÀÇ ÁöÁ¤

¸ðµâÀ» »ç¿ëÇϱâ À§ÇÑ Á¦ÀϺ¸°¡ µÇ´Â °ÍÀÌ, ÇÁ·±Æ® ÄÜÆ®·Ñ·¯·ÎÀÇ ÄÜÆ®·Ñ·¯ µð·ºÅ丮ÀÇ ¼³Á¤ ¹æ¹ý¹ýÀ» º¯°æÇÏ´Â °ÍÀÔ´Ï´Ù. ±âº»ÀûÀÎ MVC ÆÇ¿¡¼­´Â, ¹è¿­ ȤÀº ¹®ÀÚ¿­À» setControllerDirectory() ¿¡ °Ç³×Áֵ簡, ȤÀº ÆÐ½º¸¦ addControllerDirectory() ¿¡ °Ç³×ÁÖ°í ÀÖ¾ú½À´Ï´Ù.¸ðµâÀ» »ç¿ëÇÏ´Â °æ¿ì´Â, ÀÌ·¯ÇÑ ¸Þ¼Òµå ÄÝÀ» Á¶±Ý º¯°æÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

setControllerDirectory() ±×·³, ¿¬»ó ¹è¿­À» °Ç³×ÁÙ Çʿ䰡 ÀÖ½À´Ï´Ù. ¿¬»ó ¹è¿­ÀÇ Å°¿¡´Â ¸ðµâ¸í, ±×¸®°í ±× °ªÀ¸·Î ÇØ¼­ µð·ºÅ丮ÀÇ ÆÐ½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù. Ưº°ÇÑ À̸§ 'default' (À»)¸¦ Ű·Î Çϸé, ±Û·Î¹ú ÄÜÆ®·Ñ·¯ ( ¸ðµâ À̸§ °ø°£À» ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â °Í) (À»)¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ðµç ¿£Æ®¸®´Â, ÇϳªÀÇ ÆÄ½º¸¦ °¡¸®Å°´Â ¹®ÀÚ¿­ÀÇ Å°¸¦ Æ÷ÇÔÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ´ÙÀ½ÀÇ ¿¹ÀÇ °°°Ô µË´Ï´Ù.


$front->setControllerDirectory(array(
      'default' => '/path/to/application/controllers',
      'blog'    => '/path/to/application/blog/controllers'
));

addControllerDirectory() ±×·³, ¿É¼ÇÀÇ µÎ¹øÂ°ÀÇ Àμö¸¦ ¹Þ¾ÆµéÀÔ´Ï´Ù. ¸ðµâÀ» »ç¿ëÇÒ ¶§ , ¸ðµâ¸íÀ» µÎ¹øÂ°ÀÇ Àμö·Î °Ç³×ÁÝ´Ï´Ù. ÁöÁ¤ÇÏÁö ¾Ê´Â °æ¿ì´Â, ±× ÆÐ½º´Â µðÆúÆ®ÀÇ À̸§ °ø°£¿¡ Ãß°¡µË´Ï´Ù. ´ÙÀ½ÀÇ ¿¹ÀÇ °°°Ô µË´Ï´Ù.


$front->addControllerDirectory('/path/to/application/news/controllers', 'news');

7.7.3. ¸ðµâ¿¡ÀÇ ·çÆÃ

Zend_Controller_Router_Rewrite ÀÇ µðÆúÆ®ÀÇ ·çÆ®´Â Zend_Controller_Router_Route_Module ÇüÅÂÀÇ ¿ÀºêÁ§Æ®ÀÔ´Ï´Ù. ÀÌ ·çÆ®´Â, ÀÌÇÏÀÇ ¸î°³ÀÇ Çü½ÄÀÇ ·çÆÃÀ» ½Ç½ÃÇÕ´Ï´Ù.

  • :module/:controller/:action/*

  • :controller/:action/*

¹Ù²Ù¾î ¸»Çϸé, À̰ÍÀº, ÁöÁ¤ÇÑ ÄÜÆ®·Ñ·¯¿Í ¾×¼Ç ȤÀº ±× ¼±µÎ¿¡ ¸ðµâÀ» ºÙÀÎ °Í¿¡ ¸ÅÄ¡ÇÕ´Ï´Ù. ÀÌ ¸ÅĪ ±ÔÄ¢À¸·ÎºÎÅÍ ¾Æ´Â °ÍÀº, ÇÁ·±Æ® ÄÜÆ®·Ñ·¯¿Í µð½ºÆÖÃÄ¿¡°Ô °Ç³×Áø ¹è¿­·Î ÁöÁ¤Çß´Ù ÄÜÆ®·Ñ·¯ µð·ºÅ丮ÀÇ ¹è¿­¿¡ µ¿¸íÀÇ Å°°¡ ÀÖ´Â °æ¿ì¿¡°Ô¸¸ ¸ðµâ¿¡ ¸ÅÄ¡ÇÏ´Â °ÍÀÔ´Ï´Ù.

7.7.4. ¸ðµâ ȤÀº ±Û·Î¹úÀÇ µðÆúÆ® ÄÜÆ®·Ñ·¯

µðÆúÆ®ÀÇ ¶ó¿ìÅÍ¿¡¼­´Â, ÄÜÆ®·Ñ·¯°¡ URL ±×¸®°í ÁöÁ¤µÇÁö ¾Ê¾Ò´ø °æ¿ì¿¡´Â µðÆúÆ®ÀÇ ÄÜÆ®·Ñ·¯ ( ƯÈ÷ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é IndexController) (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.¸ðµâ ´ëÀÀÀÇ ÄÜÆ®·Ñ·¯¿¡ ´ëÇϰí, ¸ðµâ¸¸À» ÁöÁ¤ÇØ ÄÜÆ®·Ñ·¯¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì´Â, µð½ºÆÖÃÄ´Â ¿ì¼± ÃÖÃÊ·Î ¸ðµâ ÆÐ½º³»ÀÇ µðÆúÆ® ÄÜÆ®·Ñ·¯¸¦ ã½À´Ï´Ù. ´ÙÀ½¿¡, ±Û·Î¹ú À̸§ °ø°£ 'default' ¿¡ ÀÖ´Â µðÆúÆ® ÄÜÆ®·Ñ·¯¸¦ ã½À´Ï´Ù.

µðÆúÆ®´Â Ç×»ó ±Û·Î¹ú À̸§ °ø°£ ÂÊÀ¸·Î ÇÏ°í ½ÍÀº °æ¿ì´Â, ÇÁ·±Æ® ÄÜÆ®·Ñ·¯·Î ÆÄ¶ó¹ÌÅÍ useGlobalDefault (À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù.


$front->setParam('useGlobalDefault', true);