7.2. ÀÚ, ½ÃÀÛÇսôÙ

7.2.1. µµÀÔ

Zend_Controller ½Ã½ºÅÛÀº, È®À强À» °í·ÁÇØ ÀÛ¼ºµÇ°í ÀÖ½À´Ï´Ù. È®Àå ¹æ¹ýÀ¸·Î¼­´Â, ±âÁ¸ÀÇ Å¬·¡½º¸¦ °è½ÂÇÏ´Â °Í ¿Ü¿¡µµ, ÄÜÆ®·Ñ·¯ ÆÐ¹Ð¸®¸¦ ±¸¼ºÇÏ´Â ´Ù¾çÇÑ ÀÎÅÍÆäÀ̽º³ª Ãß»ó Ŭ·¡½º¸¦ ½ÇÀåÇß´Ù »õ·Î¿î Ŭ·¡½º¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù.

7.2.2. ¼­¹öÀÇ ¼³Á¤

Zend_Controller (Àº)´Â, ±ú²ýÇÑ ( Äí¿¡¸® ¹®ÀÚ¿­À» °ÅÀÇ »ç¿ëÇÏÁö ¾Ê´Â´Ù) URI (À»)¸¦ ¼­Æ÷Æ®Çϵµ·Ï(µíÀÌ) ÀÛ¼ºµÇ°í ÀÖ½À´Ï´Ù.ÀÌ Ãßõ ¼³Á¤À» »ç¿ëÇϱâ À§Çؼ­´Â, À¥ ¼­¹ö°¡ URI ÀÇ °³¼­¸¦ ¼­Æ÷Æ®Çϰí ÀÖ¾î, ¸ðµç ¸®Äù½ºÆ®¸¦ ´ÜÀÏÀÇ ÆÄÀÏ ( ¿©±â¿¡¼­´Â "index.php" (À¸)·Î ÇÕ´Ï´Ù.À̰ÍÀº ´ÜÁö Zend_Controller_Front (À»)¸¦ È£ÃâÇÒ »ÓÀÔ´Ï´Ù) ¿¡ ¸®µð·ºÆ® ÇÒ ¼ö ¾øÀ¸¸é ¾ÈµË´Ï´Ù. Apache ±×·³, ÀÌ ±â´ÉÀº ¿É¼ÇÀÇ ¸ðµâ mod_rewrite ±×¸®°í ¼­Æ÷Æ®µÇ°í ÀÖ½À´Ï´Ù.

¼­¹ö¸¦ ¼³Á¤Çϱâ À§ÇÑ Á¦ÀϺ¸´Â, ¿ì¼± Á¦´ë·Î ÀνºÅç ÇØ mod_rewrite (À»)¸¦ À¯È¿ÇÏ°Ô ÇÏ´Â °ÍÀÔ´Ï´Ù.´ÙÀ½¿¡,.htaccess (¿Í)°ú index.php ÀÇ 2 °³ÀÇ ÆÄÀÏÀ» ¹®¼­ ·çÆ®¿¡ ¹èÄ¡ÇÕ´Ï´Ù. .htaccess ÇÏ Apache ÇÏÁö¸¸ »ç¿ëÇÏ´Â ÆÄÀÏ·Î, ¸ðµç ¸®Äù½ºÆ®¸¦ index.php ¿¡ ¸®µð·ºÆ® ½Ã۱â À§ÇÑ mod_rewrite ÀÇ ·êÀ» ¿©±â¿¡ ±â¼úÇÕ´Ï´Ù.°³¹ßÁßÀ̶ó¸é, ƯÁ¤ÀÇ È®ÀåÀÚ(extension)ÀÇ ÆÄÀÏ Àܸ̿¦ ¸ðµÎ index.php ¿¡ ¸®µð·ºÆ® ½ÃŰ´Â ´Ü¼øÇÑ ·êÀ» ¼³Á¤ÇØ µÎ¸é ÁÁÀ» °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¸é ÀÌ¿Í °°ÀÌ µË´Ï´Ù.


RewriteEngine on
RewriteRule !.(js|ico|gif|jpg|png|css)$ index.php

À§ÀÇ ¿¹¿¡¼­´Â, ÁöÁ¤ÇÑ È®ÀåÀÚ(extension) ÀÌ¿ÜÀÇ ¸ðµç ÆÄÀÏ¿¡ ´ëÇÑ ¸®Äù½ºÆ®°¡ index.php ¿¡°Ô °Ç³×Áý´Ï´Ù.°³¹ßÁß¿¡´Â À̰ÍÀ¸·Î ÃæºÐÇÕ´Ï´Ù¸¸, ½Ç¿î¿ë ȯ°æ¿¡¼­´Â, ¸®µð·ºÆ® ÇÏÁö ¾Ê´Â µð·ºÅ丮¸¦ ÁöÁ¤ÇÏ´Â µîÀÇ ±â¼úÀÌ ÇÊ¿äÇϰÚÁö¿ä.

[
ÁÖÀÇ] ±âµ¿¿ë ÆÄÀÏÀÇ Àå¼Ò

¹®¼­ ·çÆ®¿¡ ¹èÄ¡ÇÑ´Ù PHP ÆÄÀÏÀº, ÀÌ ±âµ¿¿ë ÆÄÀϸ¸ ÇØ µÎ¾î¾ß ÇÕ´Ï´Ù.

Zend_Controller ÀÇ ±âº» ±â´ÉÀ¸·Î¼­ Äí¿¡¸® ÆÄ¶ó¹ÌÅ͸¦ Æ÷ÇÔÇÑ´Ù URL µµ ¼­Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù.¿¹¸¦ µé¾î index.php?controller=foo&action=bar (¿Í)°ú °°Àº Çü½ÄÀÔ´Ï´Ù. °Ô´Ù°¡ µ¿°í µÇ°í ÀÖ´Â ¶Ç ÇϳªÀÇ ¶ó¿ìÅÍÀÌ´Ù Zend_Controller_RewriteRouter (Àº)´Â, ¸¹Àº ȯ°æ¿¡¼­ (mod_rewrite ÀûÀÎ ±â´ÉÀ» °¡ÁöÁö ¾Ê´Â ȯ°æ¿¡¼­µµ) µ¿ÀÛÇÕ´Ï´Ù. mod_rewrite (À»)¸¦ »ç¿ëÇÒ ¼ö ¾ø´Â °æ¿ì¿¡¼­µµ, ´ç½ÅÀÇ »çÀÌÆ®¿¡¼­ Zend_Controller (À»)¸¦ »ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù.

7.2.3. ±âµ¿¿ë ÆÄÀÏ

.htaccess ÆÄÀÏÀÇ ¼³Á¤ÀÌ ³¡³ª¸é, ´ÙÀ½¿¡ index.php ±×·¸´Ù°í ÇÏ´Â »õ·Î¿î ÆÄÀÏÀ» ÀÛ¼ºÇÕ´Ï´Ù.À̰ÍÀÌ ±âµ¿¿ë ÆÄÀÏÀÌ µË´Ï´Ù. index.php (Àº)´Â, ´ÜÁö Zend_Controller_Front (À»)¸¦ ±âµ¿Çϱâ À§ÇØ(¶§¹®¿¡)ÀÎ ¸¸Å­ »ç¿ëÇÕ´Ï´Ù. Zend_Controller_Front (Àº)´Â ¹®¼­ ·çÆ®ÀÇ ¹Û¿¡ ¹èÄ¡ÇÕ´Ï´Ù.

[
ÁÖÀÇ] ÁÖÀÇ

¹®¼­ ·çÆ®¿¡ ¹èÄ¡ÇÑ´Ù PHP ÆÄÀÏÀº, ÀÌ ±âµ¿¿ë ÆÄÀϸ¸ ÇØ µÎ¾î¾ß ÇÕ´Ï´Ù.

½ÃÅ¥·¯Æ¼»ó, ´Ù¸¥ PHP ÆÄÀÏÀº À¥ ¼­¹ö·ÎºÎÅÍ ¾×¼¼½º ÇÒ ¼ö ¾ø´Â Àå¼Ò ( ¹®¼­ ·çÆ®ÀÇ ºÎÇϰ¡ ¾Æ´Ñ Àå¼Ò) ¿¡ µÎ´Â °ÍÀ» Zend (À¸)·Î¼­ °­ÇÏ°Ô Ãßõ ÇÕ´Ï´Ù. °øÀ¯ È£½ºÆÃ ȯ°æµî »ý°¢ Çß´ø ´ë·Î¿¡ °¡Áö ¾ÊÀº ȯ°æµµ ÀÖ´Â °ÍÀº ÀÌÇØÇÕ´Ï´Ù¸¸, °¡´ÉÇÑ ÇÑ Ãßõ ¼³Á¤¿¡ µû¸£µµ·Ï ÇØ ÁÖ¼¼¿ä.

Zend_Controller_Front (À»)¸¦ ±âµ¿Çϱâ À§ÇÑ ±âµ¿¿ë ÆÄÀÏ index.php (À»)¸¦ ¹®¼­ ·çÆ®¿¡ ÀÛ¼ºÇÕ´Ï´Ù.


<?php

require_once 'Zend/Controller/Front.php';

Zend_Controller_Front::run('/path/to/your/controllers');

?>

/path/to/your/controllers ÀÇ ºÎºÐ¿¡ °üÇØ¼­´Â, ´ÙÀ½ÀÇ ¸¶µð¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ. README.txt ¿¡ ±â¼úµÇ°í ÀÖµµ·Ï(µíÀÌ), Zend Framework ¶óÀ̺귯¸®ÀÇ µð·ºÅ丮´Â include_path ¿¡ µÎÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.include_path ÇÏÁö¸¸ php.ini ±×¸®°í ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì´Â, ÀÌ ÆÄÀÏ·Î require_once() Çϱâ Àü¿¡ set_include_path() (À»)¸¦ ÄÝ ÇØ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

7.2.4. µð·ºÅ丮 ±¸Á¶

Zend Framework ±×¸®°í ±¸ÃàÇÑ À¥ »çÀÌÆ®´Â, °øÅëÀÇ µð·ºÅ丮 ±¸Á¶¸¦ °øÀ¯ÇÏ´Â °ÍÀ» Ãßõ ÇÕ´Ï´Ù. ¸ðµÎ¶ó°í´Â ¸»ÇÏÁö ¾Ê½À´Ï´Ù¸¸, °¡´ÉÇÑ ÇÑ ÀÌ ±¸Á¶¿¡ ¸ÂÃßµµ·Ï ÇսôÙ. ±×·¸°Ô ÇÏ´Â °ÍÀ¸·Î,Zend Framework ÀÇ ±Ô¾à¿¡ Àͼ÷ÇØ ÀÖ´Â »ç¶÷µé¿¡°Ô À־, ´ç½ÅÀÇ Äڵ尡 º¸´Ù ÀÌÇØÇϱ⠽¬¿î °ÍÀÌ µË´Ï´Ù.

Ãßõ ÇÏ´Â ±¸Á¶´Â,(Zend ¹× ±× ¿ÜÀÇ) ¶óÀ̺귯¸®¿ëÀÇ µð·ºÅ丮¿Í ¾îÇø®ÄÉÀ̼ÇÀÇ µð·ºÅ丮¸¦ µû·Î ³ª´©´Â °ÍÀÔ´Ï´Ù.


/application
  /models
  /views
  /controllers
/document_root
  /images
  /styles
  .htaccess
  index.php
/library
  /Zend
[
ÁÖÀÇ] ÁÖÀÇ

ÀÌ ¸¶µð´Â ¹Ì¿Ï¼ºÀÔ´Ï´Ù.ÇöÀç ÀÛ¼ºÁßÀ̸ç, ÇâÈÄ ¹Ù²ð °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.

7.2.5. µðÆúÆ®ÀÇ ÄÜÆ®·Ñ·¯

µðÆúÆ®ÀÇ ÄÜÆ®·Ñ·¯´Â, ¹Ýµå½Ã ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. URI ¿¡ ÄÜÆ®·Ñ·¯°¡ ÁöÁ¤µÇÁö ¾Ê¾Ò´ø °æ¿ì, ¿¹¸¦ µé¸é ´ÙÀ½°ú °°Àº URI ÇÏÁö¸¸ ÁöÁ¤µÇ¾úÀ» °æ¿ì¿¡, ÀÌ ÄÜÆ®·Ñ·¯°¡ »ç¿ëµË´Ï´Ù.


http://framework.zend.com/

Ãʱ⼳Á¤¿¡¼­´Â, µðÆúÆ®ÀÇ ÄÜÆ®·Ñ·¯´Â IndexController (ÀÌ)¶ó´Â À̸§ÀÇ Å¬·¡½º¿¡¼­, IndexController.php ±×·¸´Ù°í ÇÏ´Â ÆÄÀÏ·Î Á¤ÀǵÇÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ³»ºÎÀûÀ¸·Î´Â, À̰ÍÀº 'index' ÄÜÆ®·Ñ·¯·Î¼­ ÂüÁ¶µË´Ï´Ù.

ÇÁ·±Æ® ÄÜÆ®·Ñ·¯·ÎÀÇ µð½ºÆÌÄ¡¿¡ ¾Õ¼­ µðÆúÆ®ÀÇ ÄÜÆ®·Ñ·¯¸¦ º¯°æÇÏ·Á¸é , ÇÁ·±Æ® ÄÜÆ®·Ñ·¯ ȤÀº µð½ºÆÖÃÄ ¿ÀºêÁ§Æ®·Î setDefaultController() ¸Þ¼Òµå¸¦ ÄÝ ÇÕ´Ï´Ù. ±× ¶§¿¡´Â, ³»ºÎÀÇ ¸í¸í ±Ô¾àÀ» »ç¿ëÇÕ´Ï´Ù.Áï, Ŭ·¡½º HomeController ( ÆÄÀÏ HomeController.php ¿¡ ±â¼úµÈ °Í) (À»)¸¦ ÂüÁ¶ÇÏ·Á¸é home (¿Í)°ú ÁöÁ¤ÇÕ´Ï´Ù.

ÄÜÆ®·Ñ·¯´Â Zend_Controller_Action Ŭ·¡½º¸¦À» °è½ÂÇØ, ÄÜÆ®·Ñ·¯ÀÇ µð·ºÅ丮¿¡ ¾øÀ¸¸é ¾ÈµË´Ï´Ù.


<?php

require_once 'Zend/Controller/Action.php';

class 
IndexController extends Zend_Controller_Action
{
    public function 
indexAction()
    {
        echo 
'IndexController  (À¸)·ÎºÎÅÍ ¾È³çÇϼ¼¿ä';
    }

    public function 
noRouteAction()
    {
        
$this->_redirect('/');
    }
}

?>

µðÆúÆ®ÀÇ ÄÜÆ®·Ñ·¯ ¹× ¾×¼Ç¿¡ ´ëÇÑ »ó¼¼, ±×¸®°í ¾×¼Ç ÄÜÆ®·Ñ·¯ Ŭ·¡½ºÀÇ ÀÛ¼º ¹æ¹ý¿¡ ´ëÇØ¼­´Â ÈÄÀÇ ÀåÀ¸·Î ¼³¸íÇÕ´Ï´Ù.

[
ÁÖÀÇ] ÁÖÀÇ

ÀÌ ¸¶µð´Â ¹Ì¿Ï¼ºÀÔ´Ï´Ù.ÇöÀç ÀÛ¼ºÁßÀ̸ç, ÇâÈÄ ¹Ù²ð °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.