php ±â¹ÝÀÇ À¥°³¹ß ÇÁ·¹ÀÓ¿öÅ© ±¸»ó
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

  • ÇÁ·¹ÀÓ¿öÅ© ±¸Á¶ ¼öÁ¤¿¡ µû¸¥ ¹®¼­ ¾÷µ¥ÀÌÆ® ÇÊ¿ä : 2009/3/13
  • ¾Æ·¡ ¹®¼­´Â ¾ÆÁ÷ ¾÷µ¥ÀÌÆ® ¾ÈµÇ¾ú´Ù.

°ü·Ã ÇÁ·ÎÁ§Æ® : [http]µðÆ®·ÎÀÌÆ® ¸ÞÅ» ÇÁ·¹ÀÓ¿öÅ©

À¥°³¹ßÀ» À§ÇÑ ÇÁ·¹ÀÓ¿öÅ©

ºü¸£°í ½¬¿î°³¹ß, ÄÚµåÀÇ Àç»ç¿ë, ¿øÇÒÇÑ Ä¿¹Â´ÏÄÉÀÌ¼Ç À» º¸ÀåÇÏ´Â ´Ù¾çÇÑ ÇÁ·¹ÀÓ¿öÅ©°¡ Àִ°ɷΠ¾Ë°í ÀÖ´Ù. µÞ ³¡À» È帮´Â ÀÌÀ¯´Â, ±×·¸´Ù´õ¶ó ¶ó°í ¾ê±â¸¸ µé¾îºÃÁö ½ÇÁ¦ RoRÀ̶óµçÁö, Django¶óµçÁö ÇÏ´Â ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇØ º»ÀûÀº ¾ø±â ¶§¹®ÀÌ´Ù.

ȸ»ç¿¡¼­ ÇÁ·ÎÁ§Æ® ´ÜÀ§·Î À¥¼­ºñ½º¸¦ Á¦ÀÛÇØº»ÀûÀÌ ¾øÀ¸´Ï, ±»ÀÌ ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇÒ Çʿ伺À» ´À³¢Áö ¸øÇ߱⠶§¹®ÀÌ´Ù. ±×³É APMÀ¸·Î ¸¸Á·ÇÏ°í »ì¾Æ¿Ô´Ù.

¿©ÇÏÆ° ±×·¯ÇÏ´Ù°¡. ÆÀ´ÜÀ§·Î À¥¼­ºñ½º¸¦ Á¦ÀÛÇÒ·Á°í ÇÏ´Ï °³¹ßÀÚ¿Í °³¹ßÀÚ, °³¹ßÀÚ¿Í µðÀÚÀÌ³Ê °°ÀÇ Çù¾÷¹æ¹ý, À¯Áöº¸¼ö, Á»´õ ½¬¿î °³¹ß¹æ¹ýµî¿¡ ´ëÇØ¼­ »ý°¢À» ÇÒ ¼ö ¹Û¿¡ ¾ø°Ô µÇ¾ú´Ù. ±×·¡¼­ »ý°¢ÇÑ°Ô ÇÁ·¹ÀÓ¿öÅ©ÀÇ µµÀÔ. ÇÁ·¹ÀÓ¿öÅ©ÀÇ µµÀÔ¸ñÀûÀº °³¹ßÀÇ ¼Óµµ, ÆíÀǼºÀÌ ¾Æ´Ñ Çù¾÷, Ä¿¹Â´ÏÄÉÀ̼Ç, À¯Áöº¸¼ö¿¡ ÃÐÁ¡À» ¸ÂÃß±â·Î Çß´Ù. À½.. Çù¾÷,Ä¿¹Â´ÏÄÉÀ̼Ç, À¯Áöº¸¼ö¼ºÀ» ¸¸Á·ÇÏ¸é °³¹ßÀÇ ¼Óµµ¿Í ÆíÀǼº±îÁö º¸ÀåµÇ´Â°Ç°¡ ??

±×·¸´Ù°í ÇØ¼­, ±âÁ¸¿¡ ¸¸µé¾îÁø ÇÁ·¹ÀÓ¿öÅ© ¼öÁØÀ¸·Î ¸¸µéÁö´Â ¾ÊÀ» °ÍÀÌ´Ù. ¸¹Àº ±â´ÉÀ» °¡Áø ÇÁ·¹ÀÓ¿öÅ©¶ó±â º¸´Ù´Â Çù¾÷À» À§ÇÑ °øÅëÀÎÅÍÆäÀ̽º, °øÅë ÀÛ¾÷ȯ°æÀ» Á¦°øÇÏ´Â Á¤µµ°¡ µÉ °ÍÀÌ´Ù.

ȯ°æ

Apache + PHP ±â¹ÝÀ¸·Î ¸¸µé »ý°¢ÀÌ´Ù. PHP·Î ÇÏ´Â ÀÌÀ¯´Â (¾ðÁ¦³ª ±×·¸Áö¸¸)Àͼ÷Çϱ⠶§¹®À̰í, moniwikiÀÇ Ç÷¯±×ÀÎ ½ºÅ¸ÀÏÀ» µû¶ó¼­ ±¸ÇöÇϱâ À§ÇÔÀÌ´Ù. ±× moniwiki°¡ Apache, PHP·Î ±¸ÇöµÇ¾î Àֱ⵵ Çϰí.

±âº»ÄÁ¼Á

module¸¦ Æ÷ÇÔÇÑ page´ÜÀ§·Î ÄÁÅÙÃ÷°¡ ¸¸µé¾îÁö´Â wiki¿Í µ¿ÀÏÇÑ ÄÁ¼ÁÀÌ´Ù. ´Ù¸¥Á¡Àº ¸ðµâÀ» MVC¸¦ µû¸£°Ô Çϰڴٴ Á¤µµÀÌ´Ù.
  1. ÄÄÆ÷³ÍÆ® Model
    Module ´ÜÀ§·Î °³¹ßµÈ´Ù. Page´Â ModuleµéÀÇ ÁýÇÕÀÌ µÈ´Ù.
  2. Message driven Architecture
    Controll, Module´Â Message¸¦ ÀÌ¿ëÇØ¼­ µ¥ÀÌÅ͸¦ Àü´Þ ¹Þ´Â´Ù.
  3. Observer ÆÐÅÏÀ» ÀÌ¿ëÇÑ view ¼±ÅÃ
  4. °¡º±°Ô : °¡´ÉÇÑ °³¹ßÀÚ¿¡°Ô ¸¹Àº ±ÇÇÑÀ» ÁØ´Ù.
  5. MVC ¸ðµ¨
    °¡º±Áö¸¸ MVCÀÇ Æ²Àº À¯ÁöÇϵµ·Ï ÇÑ´Ù.

³ª¸§ ´ëÃæ ¼³°è

¸î°³ °ø°³µÈ À¥ÇÁ·¹ÀÓ¿öÅ©¸¦ °£´ÜÈ÷ »ìÆìºÃ´Âµ¥, ´Ùµé MVC¶ó´Â ÆÐÅÏÀ» »ç¿ëÇϰí ÀÖ±â´Â ÇѰа°´Ù. ´ë·« model, view, controllerÀ» ºÐ¸®Çϵµ·Ï ÇÏ´Â patternÀ̶ó°í ÇÑ´Ù. ÀÌÇØ´Â °¡´Âµ¥, ÀÚ¼¼È÷´Â ¸ð¸£°Ú°í ±×³É ºñ½ÁÇÏ°Ô ´ë·« ±¸ÇöÇØº¼±î ÇÑ´Ù. °á±¹ view¿Í ·ÎÁ÷À» ºÐ¸®ÇÏÀÚ¶ó´Â ¸»À̴ϱî !? ÀÌ¹Ì ¸¸µé¾îÁö°í °ËÁõµÇ¾îÁø ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇÏ´Â ´ë½Å ´ë·« ±¸ÇöÀ¸·Î ¹æÇâÀ» ÀâÀº ÀÌÀ¯´Â ´ÙÀ½°ú °°´Ù.
  • ³Ê¹« ÈǸ¢ÇÑ ÇÁ·¹ÀÓ¿öÅ©¸¦ ¸¸µé°íÀÚ ¹ü¿ë¼ºÀ» °­Á¶ÇÑ ³ª¸ÓÁö ³Ê¹« ¹«°Å¿î °æ¿ì°¡ ¸¹´Ù. ´ëºÎºÐÀÇ ÇÁ·¹ÀÓ¿öÅ©¿¡ ´ëÇÑ Æò°¡µµ ±×·¸´Ù.
  • °³¹ßÀÚ¿¡°Ô ´õ ¸¹Àº ±ÇÇÑÀ» ÁÖ´Â ¹æÇâÀÌ ³ªÀ» °Í °°´Ù. ¸¹Àº ÇÁ·¹ÀÓ¿öÅ©°¡ °³¹ßÀÚÀÇ ±ÇÇÑÀ» Áö³ªÄ¡°Ô Á¦ÇÑÇÑ´Ù´Â ´À³¦À» ÁØ´Ù. ÀÎÅÍÆäÀ̽ºÁ¤µµ¸¸ µû¸£µµ·Ï Çϰí, ½ÇÁ¦ °³¹ßÀº °¢ °³¹ßÀÚÀÇ °³¼ºÀÌ °¡´ÉÇÑ ¸¹ÀÌ ¹Ý¿µ µÉ °ÍÀÌ´Ù. °³¹ßÀÚ¿¡°Ô ¸¹Àº ±ÇÇÑÀ» ÁÖ´Â°Ô ¹«½¼ ÇÁ·¹ÀÓ¿öÅ©³Ä°í ÇÒ ¼öµµ ÀÖ°Ú´Ù. ±×³É öÇÐÀÇ Â÷ÀÌ·Î ºÁÁáÀ½ ÇÑ´Ù.

framework.png
  1. ¼­ºñ½º´Â ¸ðµâµéÀ» Æ÷ÇÔÇÑ page´ÜÀ§·Î ÀÌ·ç¾îÁø´Ù. ÆäÀÌÁö´Â Çϳª ÀÌ»óÀÇ ¸ðµâÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù.
  2. °¡Àå ¸ÕÀú Page ReaderÀÌ È£ÃâµÈ´Ù.
  3. Page Reader´Â ¿äûµÈ ¼­ºñ½ºÆäÀÌÁö¸¦ ÀоîµéÀ̰í ÇØ¼®ÇÑ´Ù. ¸¸¾à [[module]]¸¦ ¸¸³ª¸é, moduleÀÇ ÀνºÅϽº¸¦ ¸¸µé°í, moduleÀÇ controllÀ» ½ÇÇàÇÑ´Ù.
  4. moduleÀÇ controllÀº modelÀ» ½ÇÇà½ÃŲ´Ù. controllÀº modelÀÇ °á°úµ¥ÀÌÅ͸¦ ¹Þ¾Æ¼­ view·Î ³Ñ±ä´Ù.
  5. page readerÀº °¢ moduleÀÇ view¸¦ Ãâ·ÂÇÏ°Ô µÈ´Ù.

moniwikiÀÇ Ç÷¯±×ÀÎ »ç¿ë ±¸Á¶¸¦ µû¶ó°¡·Á°í ÇÑ´Ù. ÀüÇüÀûÀÎ Àü¼úÆÐÅÏÀ» °¡Áö°Ô µÉ °Í °°´Ù. Áï
  • ¸ðµç ¸ðµâÀº ¼­·Î ¿ÏÀüÈ÷ µ¶¸³µÈ´Ù.
  • °¢ ÆäÀÌÁöµéÀº ÀÌµé ¸ðµâÀÇ ÁýÇÕÀÌ´Ù.
  • Module´Â 3°³ÀÇ ÀÎÀÚ¸¦ °¡Áø´Ù. ModuleÀÇ Á¦¾î¿Í Module°£ÀÇ Åë½ÅÀº ´ÙÀ½ÀÇ ÀÎÀÚ¸¦ ÅëÇØ¼­ ÀÌ·ç¾îÁö°Ô µÈ´Ù.
    formatter ±âº» ¼³Á¤°ª ¹× DB ÀνºÅϽº, À¯Àú¼¼¼Ç°ú °°Àº Àü¿ª°ªµé
    options POST,PUT µî À¯ÀúÀÔ·Â µ¥ÀÌÅÍ, Çʿ信 µû¶ó ¼³Á¤µÈ °ªµé
    value ÇÔ¼ö ÀÎÀÚ
  • ¸ðµâÀº ÇϳªÀÇ ÆÄÀÏ¿¡ ´ëÀÀµÈ´Ù. ´ÙÀ½ÀÇ MVC ¸ðµ¨À» µû¸¥´Ù.
    Controll ModelÀ» ½ÇÇà½ÃŰ°í ±× °á°ú¸¦ view¿¡ ³Ñ±ä´Ù.
    Model µ¥ÀÌÅÍ ÇÁ·Î¼¼½Ì. ·ÎÁ÷À» °¡Áø´Ù.
    View ÇÁ·Î¼¼½ÌµÈ µ¥ÀÌÅ͸¦ º¸¿©ÁØ´Ù.
  • PageReader´Â controller page¿¡¼­ ÀÛµ¿Çϸç, page¸¦ ÇØ¼®Çؼ­ ¸ðµâÀ» ½ÇÇà½ÃŰ°í °á°ú¸¦ client¿¡ Àü´ÞÇÑ´Ù.
¿¹¸¦µé¾î¼­ bbs ¸ðµâ°ú bbs ÆäÀÌÁö¸¦ ³×ºñ°ÔÀ̼ÇÇϱâ À§ÇÑ navi ¸ðµâÀ» ¸¸µé¾ú´Ù°í Çϸé, ÀÌ ¸ðµâµéÀ» Æ÷ÇÔÇÑ ÆäÀÌÁö´Â ´ÙÀ½°ú °°ÀÌ ±¸¼ºµÉ °ÍÀÌ´Ù.
<table><tr><td> 
[[bbs]] 
</td><td> 
[[navi]] 
</td></tr></table> 
 

module

module ´Â model, controll, view ¸¦ °¡Áø´Ù.
  • controllÀº ÇϳªÀÌ»óÀÇ modelÀ» °¡Áú ¼ö ÀÖ´Ù.
  • modelÀº µ¥ÀÌÅÍ ÇÁ·Î¼¼½ÌÀ» ¸Ã´Â´Ù.
  • ÇÁ·Î¼¼½ÌÀÌ ³¡³­ µ¥ÀÌÅÍ´Â view·Î ³Ñ°ÜÁ®¼­ Ŭ¶óÀÌ¾ðÆ®¿¡ Àü´ÞµÈ´Ù.
  • modelÀº ÇϳªÀÌ»óÀÇ view¸¦ °¡Áú ¼ö ÀÖ´Ù. ¿©·¯°³ÀÇ view¸¦ ó¸®Çϱâ À§Çؼ­ observer modelÀ» »ç¿ëÇÑ´Ù.
¾Æ·¡ÀÇ ¿¹´Â http://dmf.joinc.co.kr/controll.php/example/db À» ´ë»óÀ¸·Î Çϰí ÀÖ´Ù.

controll class

  • model°ú view¸¦ ÄÁÆ®·Ñ ÇÑ´Ù.
  • modelLoad¸¦ ÀÌ¿ëÇØ¼­ ¸ðµ¨À» ½ÇÇàÇÑ´Ù.
  • ¸ðµ¨¿¡¼­ ÀоîµéÀÎ µ¥ÀÌÅ͸¦ ó¸®Çϰí - ºñÁö´Ï½º ·ÎÁ÷ÀÇ Àû¿ë - view·Î µ¥ÀÌÅ͸¦ ³Ñ±ä´Ù.
  • ¸ðµ¨Àº ¿©·¯°³ÀÇ view¸¦ °¡Áú ¼ö Àִµ¥, registerOb ¸¦ ÀÌ¿ëÇØ¼­ view¸¦ µî·ÏÇϰí Àû´çÇÑ view¸¦ ½ÇÇàÇϵµ·Ï ÇÑ´Ù.
class dbtest extends ModuleControll 
{ 
    function run() 
    { 
        $cp = $this->modelLoad('trackback'); 
        $this->viewData['data'] = $cp->get(); 
        $this->viewData['pagename'] = $this->formatter['pagename']; 
        $this->viewData['uri'] = $this->formatter['uri']; 
 
        // view¸¦ µî·ÏÇÑ´Ù. 
        $this->registerOb('a', showtrackback); 
        $this->registerOb('b', showtrackbackSelect); 
 
        // dÀÇ °ª¿¡ µû¶ó¼­ µî·ÏµÈ view¸¦ ¼±ÅÃÇØ¼­ ½ÇÇàÇÑ´Ù. 
        // ex) ?d=a ¶ó¸é showtrackback 
        //     ?d=b ¶ó¸é showtrackbackSelect 
        $this->notifyOb($this->options['d']); 
    } 
} 
 

model class

µ¥ÀÌÅ͸¦ Àоîµé¿©¼­ ó¸®ÇÑ´Ù.
class trackback extends Model  
{ 
    function get() 
    { 
        $DBI = $this->formatter['db']; 
        // ÀÌÇÏ Äõ¸®¸¦ ÀÌ¿ëÇØ¼­ trackback Á¤º¸¸¦ ¾ò¾î¿Â´Ù. 
 
        return $trackbacks; 
    } 
} 
 

view class

ºä´Â ¹¹ Ưº°È÷ ÇÒÀÏÀÌ ¾ø´Ù. ±×³É view´Ù.
DB ConnectionÀº PreLoader¿¡¼­ »ý¼ºµÇ¸ç, ´Ù¸¥ ¸ðµâµé¿¡¼­´Â <b>formatter</b> ¸¦ ÀÌ¿ëÇØ¼­ ÀνºÅϽº¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. DB ÅøÀº ´Ù¸¥ °Íµé°ú ¸¶Âù°¡Áö·Î Module·Î ¸¸µé¾î¼­ ÀûÀçµË´Ï´Ù. ¿©±â¿¡ »ç¿ëµÈ DB ÅøÀº php mysql ÇÔ¼öÀÇ wrapper class Á¤µµÀÔ 
´Ï´Ù. 
<form action=<?=$uri?> method=post> 
<table class=wiki border=1> 
<? 
    while( list($id, $value) = each($data)){ 
?> 
      <tr><td><?=$value['id']?></td><td><?=$value['subject']?></td><td><?=$value['ip']?></td></tr> 
<? 
    } 
?> 
</table> 
  <input type=text name=searchstr size=12 class=keywords> 
  <input type=submit value="search" class=keywords> 
</form> 
<ul> 
  <li><a href=/controll.php/<?=$pagename?>?action=showmodule&mname=db>DB Module ¼Ò½ºÄÚµå</a></li> 
</ul> 
 

À̱ÛÀº joinc ºí·Î±×·Î ¹ßÇàµÇ¾ú½À´Ï´Ù. ´ñ±ÛÀº ºí·Î±×¿¡¼­ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.