ȸ¿ø°¡ÀԡžÆÀ̵ð/ºñ¹øã±â
ȨÀ¸·Î

PHP Ŭ·¡½º »ç¿ë¹æ¹ý Á¤¸®
7³â Àü
1.Ŭ·¡½ºÁ¤ÀÇ

Ŭ·¡½º¶õ?

Ŭ·¡½º´Â°´Ã¼ÀǺ¯¼ö¿ÍÇÔ¼ö¸¦Á¤ÀÇÇÏ´ÂÅÛÇø´À̸ç,ÀÌ¿¡µû¶óº¯¼ö·ÎÇ¥ÇöµÇ´Âµ¥ÀÌÅÍ¿µ¿ª°úÀÌ·¯Çѵ¥ÀÌÅÍ¿µ¿ª¿¡Á¢±ÙÇÒ¼öÀÖ´ÂÇÔ¼ö·Î±¸¼ºµË´Ï´Ù.Ŭ·¡½º³»¿¡Á¤ÀǵȺ¯¼ö¸¦¸â¹öº¯¼ö(member variable)¶ó°íÇÏ°íÇÔ¼ö¸¦¸Þ½îµå(method)¶ó°íÇÕ´Ï´Ù. C++°ú°°Àº°´Ã¼ÁöÇâ¾ð¾î¿¡¼­´Â¸â¹öº¯¼ö¸¦µ¥ÀÌÅ͸â¹ö,¸Þ½îµå¸¦¸â¹öÇÔ¼ö¶ó°íȣĪÇÕ´Ï´Ù. PHP¿¡¼­Å¬·¡½º¸¦»ç¿ëÇϴ°ÍÀº C++¶Ç´ÂÀÚ¹Ù¿Í°ÅÀǺñ½ÁÇÕ´Ï´Ù.

Ŭ·¡½ºÁ¤ÀÇ

Ŭ·¡½º¸¦Á¤ÀÇ(class definition)ÇÒ¶§´ÂÅ°¿öµå"class"¸¦»ç¿ëÇÕ´Ï´Ù.Ŭ·¡½º¸¦±¸¼ºÇϴ¸â¹öº¯¼ö¿Í¸Þ½îµå¸¦Á¤ÀÇÇÒ¶§´Â"var"°ú"function"À̶ó´ÂÅ°¿öµå¸¦»ç¿ëÇÕ´Ï´Ù."function"ÀºÀϹÝÇÔ¼ö¸¦Á¤ÀÇÇÒ¶§µµ»ç¿ëµÇÁö¸¸"var"ÀºÅ¬·¡½ºÀǸâ¹öº¯¼ö¸¦Á¤ÀÇÇÒ¶§¸¸»ç¿ëµÇ´ÂÅ°¿öµå·Î,¸â¹öº¯¼ö¸¦Á¤ÀÇÇÒ¶§´Â¹Ýµå½Ã¸í½ÃÇÏ¿©¾ßÇÕ´Ï´Ù.¿¹¸¦µé¾îŬ·¡½º´Â¾Æ·¡¿Í°°ÀÌÁ¤ÀÇÇÕ´Ï´Ù.ÀÌ¿¹´Â PHP ¸Å´º¾ó¿¡Àִ°ÍÀ¸·Î¼öÁ¤ÇÏÁö¾Ê°í°¡Á®¿Ô½À´Ï´Ù.ÀÌ¿¹¿¡¼­´Â $items¶ó´Â¸â¹öº¯¼ö¿Í add_item, remove_item¶ó´Â¸Þ½îµå°¡Á¤ÀǵǾîÀÖ½À´Ï´Ù.

classCart{
  var $items;  // Items in our shopping cart

// Add $num articles of $artnr to the cart
    
  function add_item ($artnr, $num){
    $this->items[$artnr]+= $num;
  }

// Take $num articles of $artnr out of the cart

function remove_item ($artnr, $num){
    if($this->items[$artnr]> $num){
      $this->items[$artnr]-= $num;
      returntrue;
    }else{
      returnfalse;
    }  
  }
}

¸â¹öº¯¼öÀÇÃʱâÈ­

PHP¿¡¼­´Â¸â¹öº¯¼ö°ªÀ»¾Æ·¡¿Í°°ÀÌ»ó¼ö¶Ç´Âº¯¼ö¸¦ÀÌ¿ëÇÏ¿©ÃʱâÈ­ÇÒ¼öÀÖ½À´Ï´Ù.

»ó¼ö·ÎÃʱâÈ­ÇÒ¶§:

classCart{
  var $items =0;  // Items in our shopping cart
}


º¯¼ö·ÎÃʱâÈ­ÇÒ¶§(1):

classCart{
  var $items;  // Items in our shopping cart

functionCart($items){
    $this->items = $items;
  }
}


º¯¼ö·ÎÃʱâÈ­ÇÒ¶§(2):


$items =0;

classCart{
  var $items = $GLOBALS["items"];  // Items in our shopping cart
}

¹Ý¸é PHP4¿¡¼­´Âvarº¯¼ö¿¡´Â»ó¼ö·Î¸¸ÃʱâÈ­ÇÒ¼öÀÖ°í,»ó¼ö°¡¾Æ´Ñ°ªÀ»°¡Áö°íÃʱâÈ­ÇÒ¶§´Â»ý¼ºÀÚ¸¦ÀÌ¿ëÇÏ¿©¾ßÇÕ´Ï´Ù.Áï,var $items = $GLOBALS["items"];¿Í°°ÀºÇ¥ÇöÀºÇã¿ëÇÏÁö¾Ê½À´Ï´Ù.

µû¶ó¼­¾Æ·¡¿Í°°ÀºÇ¥ÇöÀº PHP4¿¡¼­´ÂÇã¿ëÇÏÁö¾Ê½À´Ï´Ù.


classCart{
  var $todays_date = date("Y-m-d");
  var $name = $firstname;
  var $owner ='Fred '.'Jones';
  var $items = array("VCR","TV");
}


PHP4¿¡¼­ÃʱâÈ­ÇÒ¶§µ¿ÀÏÇÑ°á°ú¸¦¾òÀ¸·Á¸é¾Æ·¡¿Í°°ÀÌ»ý¼ºÀÚ¸¦ÀÌ¿ëÇÕ´Ï´Ù.


classCart{
  var $todays_date;
  var $name;
  var $owner;
  var $items;

functionCart(){
    $this->todays_date = date("Y-m-d");
    $this->name = $GLOBALS['firstname'];
    /* etc. . . */
  }
}


PHP4 ¿¹¾à¾î

stdClass

stdClass´ÂZend¿¡¼­³»ºÎÀûÀ¸·Î»ç¿ëÇÏ°íÀִ¿¹¾à¾îÀÔ´Ï´Ù.µû¶ó¼­»ç¿ëÀÚ´ÂŬ·¡½º¸íÀ¸·Î stdClass¸¦»ç¿ëÇÒ¼ö¾ø½À´Ï´Ù. get_declared_classes()ÇÔ¼ö¸¦»ç¿ëÇϸéÇöÀ罺ũ¸³Æ®¿¡Á¤ÀǵÈŬ·¡½º¸íÀ»¹è¿­¿¡´ã¾ÆµÇµ¹·ÁÁÝ´Ï´Ù.µû¶ó¼­ÀÌÇÔ¼ö¸¦ÀÌ¿ëÇϸé stdClassÀÇÁ¸À縦ȮÀÎÇÒ¼öÀÖ½À´Ï´Ù.



php

classVegetable{

}

classSpinachextendsVegetable{

}

$arr_class = get_declared_classes();

while(list($k,$v)=each($arr_class)){
  echo("\$arr_class[$k]=$v
\n");
}

?>


À̹®¼­¸¦½ÇÇàÇϸé¾Æ·¡¿Í°°Àº°á°ú¸¦¾òÀ»¼öÀÖ½À´Ï´Ù.



$arr_class[0]=stdClass
$arr_class[1]=OverloadedTestClass
$arr_class[2]=Directory
$arr_class[3]=OCI-Lob
$arr_class[4]=vegetable
$arr_class[5]=spinach


À§¿¹Á¦ÀǽÇÇà°á°ú¸¦º¸¸é,»ç¿ëÀÚ°¡Á¤ÀÇÇÑ vegetable, spinach ¿Ü¿¡µµ stdClass,OverloadedTestClass,Directory, OCI-Lob°¡Àִ°ÍÀ»º¼¼öÀÖ½À´Ï´Ù.Á»´õÀÚ¼¼ÇÑ°ÍÀº¸Þ´º"Ŭ·¡½º&°´Ã¼ ÇÔ¼ö >> get_declared_classes()"¸¦»ìÆ캸½Ã±â¹Ù¶ø´Ï´Ù.

¸ÅÁ÷ÇÔ¼ö(magic function)

__sleep, __wakeup°ú°°ÀÌ"__"·Î½ÃÀÛÇϴ¸ÅÁ÷ÇÔ¼ö´Â PHP Ŭ·¡½º³»¿¡¼­Æ¯¼öÇѸñÀûÀ¸·Î»ç¿ëµË´Ï´Ù.µû¶ó¼­ÀÌÇÔ¼öµéÀÌ°¡Áö°íÀִ¹®¼­È­µÈ¸ÅÁ÷±â´ÉÀ»»ç¿ëÇÒÇÊ¿ä°¡¾ø´Ù¸éŬ·¡½º³»¿¡ÀÌÇÔ¼öµéÀ»Á¤ÀÇÇؼ­´Â¾ÈµË´Ï´Ù.ÀÚ¼¼ÇÑ°ÍÀº¸Þ´º¿¡¼­"¸ÅÁ÷ÇÔ¼ö"ÀåÀ»»ìÆ캸±â¹Ù¶ø´Ï´Ù.

$this°¡¹«¾ù¿¡¾²´Â¹°°ÇÀΰí?

Ŭ·¡½º¸Þ½îµå³»¿¡¼­¸¸»ç¿ëµÇ¸ç,Ŭ·¡½ºÀÇÇöÀçÀνºÅϽº¸¦ÂüÁ¶ÇÒ¶§»ç¿ëÇϴº¯¼öÀ̸ç,¿¹¸¦µé¾îÇöÀ簴ü³»¿¡ something¶ó°í¸í¸íµÈÀÓÀÇÀǺ¯¼ö¶Ç´ÂÇÔ¼ö¸¦ÂüÁ¶ÇϱâÀ§Çؼ­´Â $this->somethingÀ»»ç¿ëÇÏ¿©¾ßÇÕ´Ï´Ù.Áï,"$this"ÀÇÀǹ̴Ânew¿¬»êÀÚ¿¡ÀÇÇØ»ý¼ºµÉ°´Ã¼ÀÚ½ÅÀ»ÀǹÌÇÕ´Ï´Ù.±×·¯´Ï¾ÆÁ÷»ý¼ºµÇÁö¾ÊÀº°´Ã¼ÀÚ½ÅÀ»ÀǹÌÇÏ´ÂÀÇ»ç(ëôÞÄ)º¯¼ö(pseudo variable)À̸ç,"my own"¶Ç´Â"current object"¶ó°íºÒ¸®¿ó´Ï´Ù.

¾Õ¿¡¼­Å¬·¡½º¸¦ºØ¾î»§Æ²°ú°°´Ù°íÇß½À´Ï´Ù.Á¤ÀǵÈŬ·¡½º¿¡ÀÇÇØ»ý¼ºµÈ°´Ã¼´ÂºØ¾î»§Æ²·Î¸¸µé¾î³½¼ö¸¹ÀººØ¾î»§ÀÌÁö¿ä.¾Æ·¡¿¹¿¡¼­º»´Ù¸é, $ºØ¾î»§1->make("Ư±Þ¹Ð°¡·ç")À¸·Î make()¸Þ½îµå¿¡Á¢±ÙÇÑ´Ù¸éÀ̶§ make()¸Þ½îµå³»ÀÇ $this´Â $ºØ¾î»§1À»ÀǹÌÇÏ°í, $ºØ¾î»§2->make("Á߱޹а¡·ç")À¸·ÎÁ¢±ÙÇÑ´Ù¸éÀ̶§ $this´Â $ºØ¾î»§2¸¦ÀǹÌÇÏ°í, $ºØ¾î»§3->make("Àú±Þ¹Ð°¡·ç")À¸·ÎÁ¢±ÙÇÑ´Ù¸éÀ̶§ $this´Â $ºØ¾î»§3À»ÀǹÌÇÕ´Ï´Ù.



classºØ¾î»§{
  varÀç·á;

function make($Àç·á){
    $this->Àç·á= $Àç·á;
    ......
  }
}

$ºØ¾î»§1=newºØ¾î»§;// ÀνºÅϽº "ºØ¾î»§1"
$ºØ¾î»§2=newºØ¾î»§;// ÀνºÅϽº "ºØ¾î»§2"
$ºØ¾î»§3=newºØ¾î»§;// ÀνºÅϽº "ºØ¾î»§3"

$ºØ¾î»§1->make("Ư±Þ¹Ð°¡·ç");
$ºØ¾î»§2->make("Á߱޹а¡·ç");
$ºØ¾î»§3->make("Àú±Þ¹Ð°¡·ç");






2.°´Ã¼»ý¼º  


°´Ã¼»ý¼º=°´Ã¼ÃʱâÈ­(object initialization)=ÀνºÅϽºÈ­(instantiation)

Ŭ·¡½º´ÂºØ¾î»§À»¸¸µå´ÂƲ(= type,=template)°ú°°Àº°ÍÀ¸·Î,Ŭ·¡½º³»¿¡Á¤Àǵȸ޽îµå¿Í¸â¹öº¯¼ö¸¦»ç¿ëÇϱâÀ§Çؼ­´ÂƲÀ»°¡Áö°íºØ¾î»§À»¸¸µå´Â°Í°°ÀÌ°´Ã¼¸¦»ý¼ºÇÏ¿©¾ßÇÕ´Ï´Ù.°´Ã¼(object)¸¦ÃʱâÈ­Çϴ¹æ¹ýÀºnew¿¬»êÀÚ¸¦»ç¿ëÇÏ¿©°´Ã¼¸¦º¯¼ö¿¡ÀνºÅϽº½ÃÅ°´Â°ÍÀÔ´Ï´Ù.



classCart{
  var $items;  // Items in our shopping cart

// Add $num articles of $artnr to the cart

function add_item ($artnr, $num){
    $this->items[$artnr]+= $num;
  }

// Take $num articles of $artnr out of the cart

function remove_item ($artnr, $num){
    if($this->items[$artnr]> $num){
      $this->items[$artnr]-= $num;
      returntrue;
    }else{
      returnfalse;
    }  
  }
}

$cart =newCart;
$cart->add_item("10",1);


À§¿Í°°ÀÌÇϸéŬ·¡½ºCart¿¡´ëÇÑ°´Ã¼ $cart°¡»ý¼ºµË´Ï´Ù.°´Ã¼ÇÔ¼ö add_item()ÀºÀå¹Ù±¸´Ï¿¡Ç°¸ñ¹øÈ£"10"ÀǼö·®À»1°³Ãß°¡ÇϱâÀ§ÇØÈ£ÃâµË´Ï´Ù.

ÁöÁ¤¿¬»êÀÚ"->"ÀÇÀǹÌ

"->"´Â°´Ã¼ÀǸâ¹öº¯¼ö¶Ç´Â¸Þ½îµå¸¦ÁöÁ¤Çϴµ¥»ç¿ëµÇ´ÂÁöÁ¤¿¬»êÀÚÀÔ´Ï´Ù. C++¾ð¾î¸¦Á¢Çغ»ºÐÀº½±°ÔÀÌÇØÇϽðÚÁö¸¸,new¿¬»êÀڷλý¼ºµÇ´Â°´Ã¼¸¦³ªÅ¸³»´Â°´Ã¼¸í¿¡´Â½ÇÁ¦·Î°´Ã¼ÀǸâ¹ö(º¯¼ö¶Ç´ÂÇÔ¼ö)°¡Á¸ÀçÇϴ°ÍÀ̾ƴ϶ó°´Ã¼ÀǸâ¹ö°¡Á¸ÀçÇϴ¸޸𸮻ó¿¡À§Ä¡¸¦³ªÅ¸³»´ÂÁÖ¼Ò(adress)°¡´ã°ÜÁ®ÀÖ½À´Ï´Ù.ÀÌ¿Í°°ÀÌ°´Ã¼ÁöÇâ¾ð¾î¿¡¼­´ÂÁÖ¼Ò¸¦°¡Áö°í¸â¹ö¸¦ÂüÁ¶ÇÏ·Á¸é¾Æ·¡¿Í°°ÀÌÁöÁ¤¿¬»êÀÚ"->"¸¦ÀÌ¿ëÇϰԵ˴ϴÙ.

¸â¹öº¯¼ö¸¦ÂüÁ¶ÇÒ¶§:°´Ã¼¸í->º¯¼ö;
¸Þ½îµå¸¦ÂüÁ¶ÇÒ¶§   :°´Ã¼¸í->ÇÔ¼ö;

C++¾ð¾î¿¡¼­´Â"->"¸¦È­»ìÇ¥¸â¹ö¿¬»êÀÚ¶ó°í¸»Çϸç,"->"ÀǾÕÂÊ¿¡Àִ½ĺ°ÀÚ(¿©±â¼­´Â°´Ã¼¸í)°¡Æ÷ÀÎÅÍ(pointer;ÁÖ¼Ò¸¦ÀǹÌÇÔ)À϶§±×¸â¹ö¸¦ÂüÁ¶ÇϱâÀ§ÇÑ¿¬»êÀÚÀÔ´Ï´Ù.

Áö¿ªº¯¼ö¿¡ÃʱâÈ­µÈ°´Ã¼

°´Ã¼¸¦Áö¿ªº¯¼ö¿¡ÀνºÅϽºÇÒ¼öÀֱ⶧¹®¿¡,Ŭ·¡½º¸¦Á¤ÀÇÇÏ°í°´Ã¼¸¦»ý¼ºÇϴ°ÍÀ»ÇϳªÀǸðµâ·Î°³¹ßÇÒ¼öÀÖ½À´Ï´Ù.

¿¹Á¦ÄÚµå:
php

function class_in_function(){
  class test {
    var $a =10;
    function test(){
      echo "ÇÔ¼ö ³»¿¡ Á¤ÀÇµÈ Å¬·¡½ºÀÇ »ý¼ºÀÚ ½ÇÇà
";
    }
    function echo_test(){
      echo "ÇÔ¼ö ³»¿¡ Á¤ÀÇµÈ Å¬·¡½ºÀÇ ¸â¹öº¯¼ö \$aÀÇ °ª = ".$this->a."
";
    }
  }

  $obj =new test;
  $obj->echo_test();
}

class_in_function();
?>


½ÇÇà°á°ú:

ÇÔ¼ö³»¿¡Á¤ÀǵÈŬ·¡½ºÀÇ»ý¼ºÀÚ½ÇÇà
ÇÔ¼ö³»¿¡Á¤ÀǵÈŬ·¡½ºÀǸâ¹öº¯¼ö $aÀÇ°ª=10

°´Ã¼»ý¼ºÇÒ¶§»ý¼ºÀÚ¸íÀ»°¡º¯ÇÔ¼ö·ÎÁöÁ¤Çϱâ



$classname ="MiniDB";
$obj =new $classname();


ÀÌÄÚµå´Â PHP¿Í PHP4 ¸ðµÎ¿¡¼­Á¤»óÀûÀ¸·Îµ¿ÀÛÇÕ´Ï´Ù.

¸Þ½îµå¸íÀ»º¯°æÇϱâ(°¡º¯ÇÔ¼ö)

PHPÀǸŴº¾óÀ»º¸¸é°¡º¯ÇÔ¼ö(variable function)¸¦Áö¿øÇϴµ¥ÀÌ°ÍÀºº¯¼ö¸íµÚ¿¡°ýÈ£°¡¿ÔÀ»¶§, PHP´Â±×À̸§À»°¡ÁøÇÔ¼ö¸¦Ã£¾Æ½ÇÇàÇϴ°ÍÀÔ´Ï´Ù.ÀÌ°ÍÀºÅ¬·¡½ºÀǸ޽îµå¿¡¼­µµ±×´ë·Î»ç¿ëÇÒ¼öÀÖ½À´Ï´Ù.



class test {
  function A(){
    echo "³ª A ÇÔ¼ö
\n";
  }
}

$obj =new test;

$method ="A";
$obj->$method();


ÀÌ°ÍÀ»ÀÀ¿ëÇÏ¿©°°Àº½ÇÇ๮À¸·Î A0, A1, A2¶ó´Â¸Þ½îµå¿¡¹ø°¥¾Æ°¡¸é¼­Á¢±ÙÇÏ·Á¸é¿ª½Ã°¡º¯ÇÔ¼ö¸¦»ç¿ëÇϸéµË´Ï´Ù.



class test {
  function A0(){
    echo "³ª A0 ÇÔ¼ö
\n";
  }

function A1(){
    echo "³ª A1 ÇÔ¼ö
\n";
  }
  function A2(){
    echo "³ª A2 ÇÔ¼ö
\n";
  }
}

$obj =new test;

for($i=0;$i<3;$i++){
    $method ="A$i";
    $obj->$method();
}


À§¿¡°ÍÀº¸ðµÎ PHP3¿Í PHP4¿¡¼­¸ðµÎµ¿À۵ǴÂÄÚµåÀÔ´Ï´Ù.¸¸¾à, PHP4¿¡¼­¸¸µ¿ÀÛ½ÃÄѵµ¹«¹æÇÏ´Ù¸é¾Æ·¡¿Í°°ÀÌÁß°ýÈ£¸¦ÀÌ¿ëÇϸé¼Ò½º¸¦°£°áÇÏ°ÔÄÚµùÇÒ¼öÀÖ½À´Ï´Ù.



for($i=0;$i<3;$i++){
  $obj->{"a$i"}();
}


°´Ã¼¸íÀ»º¯°æÇϱâ(°¡º¯º¯¼ö)

°¡º¯º¯¼ö(VariableVariables)ÀÇÀ¯¿ëÇÔÀº¸ðµÎ¾Ë°íÀÖ°ÚÁö¸¸ PHP4¿¡¼­´Âº°¹®Á¦°¡¾øÁö¸¸ PHP¿¡¼­°´Ã¼º¯¼ö¸¦°¡º¯º¯¼ö·Î»ç¿ëÇϱâ´Â±×¸®½±Áö¾Ê½À´Ï´Ù.



class test {
  var $hello ="hello world";
}

$obj =new test;
$a ="obj";
echo $$a->hello;// or echo ${$a}->hello;


PHP¿¡¼­À§¿Í°°ÀÌÀÛ¼ºÇÏ¿©½ÇÇàÇÑ´Ù¸é,

Object
Parse error: parse error,...... test.php3 on line 9

¿Í°°Àº¿¡·¯¸¦¸¸³ª°ÔµË´Ï´Ù.±×·¯³ª PHP4¿¡¼­´Â°´Ã¼º¯¼ö¿¡µµ°¡º¯º¯¼ö¸¦Á¦´ë·ÎÁö¿øÇϱâ½ÃÀÛÇß½À´Ï´Ù.µû¶ó¼­À§ÀÇ¿¹Á¦°¡¿¡·¯¾øÀÌÀß½ÇÇàµÇÁö¿ä.±×·¯¸é PHP¿¡¼­´Â°´Ã¼º¯¼öÀÇÀ̸§À»º¯°æÇÒ¼ö¾øÀ»±î¿ä?¾Æ·¡¿Í°°ÀÌ $GLOBALS ¹è¿­À»»ç¿ëÇغ¸¼¼¿ä.¾Æ¹«¹®Á¦¾øÀÌÀß½ÇÇàµÉ°Ì´Ï´Ù.



class test {
  var $hello ="hello world";
}

$obj =new test;
$a ="obj";
echo $GLOBALS[$a]->world();


µû¶ó¼­ PHP3¿Í PHP4 ¸ðµÎ¿¡¼­µ¿À۵DZ⸦¹Ù¶õ´Ù¸é $GLOBALS ¹è¿­À»ÀÌ¿ëÇÏ¿©ÀÛ¼ºÇϼ¼¿ä.

¹è¿­±¸Á¶ÀǸâ¹öº¯¼ö¸¦°¡º¯º¯¼ö·Î´Ù·ç´Â¹æ¹ý


class test {
  var $arr = array();

function test(){
    $this->arr[0]=0;
    $this->arr[1]=1;
  }
}

$obj =new test;


À§¿Í°°ÀÌŬ·¡½º test¿¡¹è¿­±¸Á¶ÀǸâ¹öº¯¼ö°¡ÀÖÀ»¶§,ÀÌ·¯ÇѸâ¹öº¯¼öÀǹ迭¿ä¼Ò¿¡Á¢±ÙÇÏ·Á¸é $obj->arr[0];¿Í°°ÀÌ»ç¿ëÇϸéµË´Ï´Ù.¿©±â¼­¸â¹öº¯¼ö¸í"arr"À»°¡º¯º¯¼ö·Îó¸®ÇÏ·Á¸é,



$prop ="arr";
$obj->{"$prop"}[0];


¿Í°°ÀÌ°¡º¯º¯¼ö $prop¸¦Áß°ýÈ£·Î¹­¾îÁÖ¼¼¿ä.¿©±â¼­°ãµû¿ÈÇ¥´Â»ý·«ÇصµµË´Ï´Ù. PHP3¿Í PHP4¿¡¼­¸ðµÎÀßµ¿ÀÛÇÒ°ÍÀÔ´Ï´Ù.







3.Ŭ·¡½º»ó¼Ó


Ŭ·¡½º¸¦»ó¼ÓÇÏ·Á¸é?

±âÁ¸¿¡À̹ÌÀÛ¼ºµÈŬ·¡½º¸¦»ó¼Ó(class inheritance)¹ÞÀ¸¸éÀ̹ÌÀÛ¼ºµÈ¸Þ½îµå¿Í¸â¹öº¯¼ö¸¦±×´ë·ÎÀ̾î¹Þ°ÔµË´Ï´Ù.»ó¼Ó¹ÞÀºÆ¯¼º¿¡µ¡ºÙ¿©»õ·Î¿îƯ¼ºÀ»Ãß°¡Çϴ¹æ¹ýÀ¸·Î»õ·Î¿îŬ·¡½º¸¦Á¤ÀÇÇϰԵ˴ϴÙ.ÀÌ¿Í°°À̱âÁ¸ÀÇŬ·¡½º·ÎºÎÅÍƯ¼ºÀ»À̾î¹Þ´Â°ÍÀ»»ó¼ÓÀ̶ó°íÇÕ´Ï´Ù.À̶§È®ÀåµÈŬ·¡½º¸¦Á¤ÀÇÇϱâÀ§ÇØ"extends"¶ó´ÂÅ°¿öµå¸¦»ç¿ëÇÕ´Ï´Ù.

ºÎ¸ðŬ·¡½º&ÀÚ½ÄŬ·¡½º¿¡°ü·ÃµÈ¿ë¾î

±âÁ¸ÀÇŬ·¡½º¿ÍÈ®ÀåµÈŬ·¡½º¸¦³ªÅ¸³»´Â¿ë¾î´Â°´Ã¼ÁöÇâ¾ð¾î¸¶´Ù´Ù¾çÇÏ°Ô»ç¿ëµÇ°íÀÖ½À´Ï´Ù.±×·¯³ª¾î¶²¿ë¾î¸¦»ç¿ëÇÏ´õ¶óµµ°°ÀºÀǹ̷λç¿ëµÇ°íÀÖ´Ù°íÀÌÇØÇϽøéµË´Ï´Ù.

±âÁ¸ÀÇŬ·¡½ºÈ®ÀåµÈŬ·¡½º
¿ë¾î¿µ¹®¿ë¾î¿µ¹®
±â¹ÝŬ·¡½ºbaseclassÆÄ»ýŬ·¡½º derived class
¼öÆÛŬ·¡½ºsuperclass¼­ºêŬ·¡½ºsubclass
ºÎ¸ðŬ·¡½º parent classÀÚ½ÄŬ·¡½º child class

Ŭ·¡½º»ó¼Ó¿¹Á¦


classCart{
  var $items;  // Items in our shopping cart

// Add $num articles of $artnr to the cart

function add_item ($artnr, $num){
    $this->items[$artnr]+= $num;
  }

// Take $num articles of $artnr out of the cart

function remove_item ($artnr, $num){
    if($this->items[$artnr]> $num){
      $this->items[$artnr]-= $num;
      returntrue;
    }else{
      returnfalse;
    }  
  }
}

class Named_Cart extendsCart{
  var $owner;

function set_owner ($name){
    $this->owner = $name;
  }
}


Ŭ·¡½º Named_Cart´ÂŬ·¡½ºCartÀǸðµçº¯¼ö¿ÍÇÔ¼ö¸¦±×´ë·Î»ó¼Ó¹Þ°ÔµÇ¸ç,»õ·Î¿î¸â¹öÀκ¯¼ö $owner°úÇÔ¼ö set_owner()¸¦Ãß°¡ÇÏ¿©Á¤ÀÇÇÕ´Ï´Ù.¾Õ¼­¹è¿înew¿¬»êÀÚ¸¦ÀÌ¿ëÇÏ¿©Å¬·¡½º Named_CartÀÇ°´Ã¼¸¦»ý¼ºÇÑÈÄÀå¹Ù±¸´ÏÁÖÀÎÀ»ÁöÁ¤ÇϰųªÁÖÀÎÀÌ´©±¸ÀÎÁöÈ®ÀÎÇÒ¼öÀÖ½À´Ï´Ù.¾Æ¿ï·¯ºÎ¸ðŬ·¡½ºCart¿¡ÀÖ´ÂÀå¹Ù±¸´Ï°ü·ÃÇÔ¼ö¸¦±×´ë·Î»ç¿ëÇÒ¼öÀÖ½À´Ï´Ù.



$ncart =new Named_Cart;    // Create a named cart
$ncart->set_owner ("kris");// Name that cart
print $ncart->owner;        // print the cart owners name
$ncart->add_item ("10",1);// (inherited functionality from cart)


´ÜÀÏ»ó¼Ó

PHP´Â´ÙÁß»ó¼Ó(multiple inheritance)¸¦Áö¿øÇÏÁö¾ÊÀ¸¸ç,¿À·ÎÁö´ÜÀÏ»ó¼Ó¸¸Áö¿øÇÕ´Ï´Ù.





4.»ý¼ºÀÚ  


»ý¼ºÀÚ¶õ?

»ý¼ºÀÚ(constructor)´ÂŬ·¡½ºÀÇ»õ·Î¿îÀνºÅϽº°¡»ý¼ºµÉ¶§ÀÚµ¿ÀûÀ¸·ÎÈ£ÃâµÇ´ÂŬ·¡½º³»ÀÇÇÔ¼öÀ̸ç,Ŭ·¡½º¸í°úµ¿ÀÏÇÑÀ̸§¸¦°®´ÂƯ¼öÇѸ޽îµåÀÔ´Ï´Ù.



classCart{
  var $items;  // Items in our shopping cart

// Add $num articles of $artnr to the cart

function add_item ($artnr, $num){
    $this->items[$artnr]+= $num;
  }

// Take $num articles of $artnr out of the cart

function remove_item ($artnr, $num){
    if($this->items[$artnr]> $num){
      $this->items[$artnr]-= $num;
      returntrue;
    }else{
      returnfalse;
    }  
  }
}

class Auto_Cart extendsCart{
  function Auto_Cart (){
    $this->add_item ("10",1);
  }
}


À§ÀÇ¿¹Á¦´ÂŬ·¡½º Auto_Cart°¡new¿¬»êÀڷθ¸µé¾îÁú¶§¸¶´ÙÇ°¸ñ¹øÈ£"10"ÀǼö·®ÀÌ1À»°®µµ·ÏÀå¹Ù±¸´Ï¸¦ÃʱâÈ­½ÃÅ°´Â»ý¼ºÀÚ¸¦»õ·ÎÀÌÆ÷ÇÔÇÏ¿©Á¤ÀÇÇÏ¿´½À´Ï´Ù.

»ý¼ºÀÚ¿¡Àü´ÞµÇ´ÂÀÎÀÚ

»ý¼ºÀÚ´ÂÇÊ¿äÇϸ鼱ÅÃÀûÀ¸·ÎÀÎÀÚ(argument)¸¦Àü´ÞÇÒ¼öµµÀֱ⶧¹®¿¡¸Å¿ìÀ¯¿ëÇÏ°Ô»ç¿ëµË´Ï´Ù.



class Constructor_Cart extendsCart{
  function Constructor_Cart ($item ="10", $num =1){
    $this->add_item ($item, $num);
  }
}

// Shop the same old boring stuff.

$default_cart   =new Constructor_Cart;

// Shop for real...

$different_cart =new Constructor_Cart ("20",17);


PHP3¿Í PHP4 »ý¼ºÀÚ»çÀÌ¿¡¹ß»ýÇϴ¹̹¦ÇÑÂ÷ÀÌ

PHP¿¡¼­´ÂŬ·¡½º¿Íµ¿ÀÏÇÑÀ̸§À»°¡ÁøÇÔ¼ö¸¦»ý¼ºÀÚ·Îó¸®ÇÏ°íÀÖ½À´Ï´Ù.µû¶ó¼­¾Æ·¡¿Í°°Àº°æ¿ì¿¡Å¬·¡½º BÀÇÀ̸§°úµ¿ÀÏÇÑÀ̸§ÀÇÇÔ¼ö B()°¡¾øÀ¸¹Ç·Î°´Ã¼¸¦»ý¼ºÇÒ¶§½ÇÇàÇÒ»ý¼ºÀÚ°¡¾ø½À´Ï´Ù.



class A {
  function A(){
    echo "I am the constructor of A.
\n";
  }
}

class B extends A {
  function C(){
    echo "I am a regular function.
\n";
  }
}

// no constructor is being called in PHP.
$b =new B;


±×·¯³ª¸¸¾à¾Æ·¡¿Í°°ÀÌŬ·¡½º A¿¡ÇÔ¼ö B()°¡Á¤ÀǵǾîÀִٸ鼳»çŬ·¡½º B¸¦°¡Áö°í°´Ã¼¸¦»ý¼ºÇÏ´õ¶óµµÅ¬·¡½º A¿¡ÀÖ´ÂÀϹÝÇÔ¼ö B()¸¦Å¬·¡½º BÀÇ»ý¼ºÀÚ·ÎÀνÄÇÕ´Ï´Ù.Áï, PHP¿¡¼­´ÂÇÔ¼ö B()°¡Å¬·¡½º B¿¡¼ÓÇØÀÖ´ÂÁö¾Æ´Ï¸éºÎ¸ðŬ·¡½º·ÎºÎÅÍ»ó¼ÓµÈÇÔ¼öÀÎÁö¸¦ÀνÄÇÏÁö¸øÇÕ´Ï´Ù.µû¶ó¼­°´Ã¼ $b¸¦»ý¼ºÇÒ¶§Å¬·¡½º A¿¡ÀÖ´ÂÀϹÝÇÔ¼ö B()¸¦»ý¼ºÀڷνá½ÇÇàÇϰԵǴ°ÍÀÌÁö¿ä.



class A {
  function A(){
    echo "I am the constructor of A.
\n";
  }

function B(){
    echo "I am a regular function named B in class A.
\n";
    echo "I am not a constructor in A.
\n";
  }
}

class B extends A {
  function C(){
    echo "I am a regular function.
\n";
  }
}

// no constructor is being called in PHP.
$b =new B;


Ŭ·¡½º B¿¡¼ÓÇÏÁöµµ¾ÊÀº,ºÎ¸ðŬ·¡½º·ÎºÎÅÍ»ó¼ÓµÈÀϹÝÇÔ¼ö B()¸¦Å¬·¡½º BÀÇ»ý¼ºÀÚ·ÎÀνÄÇѴٴ°ÍÀº´ëºÎºÐ¿ì¸®°¡ÀüÇôÀǵµÇÏÁö¾Ê´ÂÀÏ·ÎÀ߸øÇÏ´Ù°¡´Â¿øÄ¡¾Ê´Â°á°ú¸¦ÃÊ·¡ÇÒ¼öµµÀÖ½À´Ï´Ù.°´Ã¼ÁöÇâ¾ð¾î¿¡¼­¸»Çϴ»ý¼ºÀÚÀDZ¸ºÐÀ̸ðÈ£ÇØÁø´Ù´Â°ÍÀÌÁö¿ä.ÀÌ·¯Çѹ®Á¦¸¦ PHP4¿¡¼­´Â¹Ù·ÎÀâ¾Ò½À´Ï´Ù.´ÜÁöÀ̸§¸¸°°´Ù°í»ý¼ºÀÚ·Îó¸®Çϴ°ÍÀ̾ƴ϶ó¹Ýµå½ÃÇØ´çŬ·¡½º³»¿¡Æ÷ÇԵǾîÀִ°͸¸»ý¼ºÀÚ·Îó¸®Çϵµ·Ï¼öÁ¤ÇÏ¿´½À´Ï´Ù.µû¶ó¼­À§ÀÇ¿¹¸¦ PHP4¿¡¼­¼öÇàÇÑ´Ù¸éŬ·¡½º A¿¡¼ÓÇÑÀϹÝÇÔ¼ö B()¸¦»ý¼ºÀڷνá½ÇÇàÇÏÁö´Â¾Ê½À´Ï´Ù.

´ë½Å¿¡ PHP4¿¡¼­´Â»ý¼ºÀÚ¿Í°ü·ÃÇÏ¿©»õ·Î¿î±â´ÉÀÌÃß°¡µÇ¾ú½À´Ï´Ù.ÆÄ»ýŬ·¡½º¿¡¼­»ý¼ºÀÚ°¡Á¤ÀǵǾîÀÖÁö¾ÊÀ¸¸é±×ºÎ¸ðŬ·¡½º¿¡Á¤ÀǵȻý¼ºÀÚ°¡½ÇÇàÇϵµ·Ï¼öÁ¤µÇ¾ú½À´Ï´Ù.Áï,À§ÀÇ¿¹¿¡¼­º¸¸é°´Ã¼ $b¸¦»ý¼ºÇÒ¶§Å¬·¡½º B¿¡ÇØ´çÇϴ»ý¼ºÀÚ B()ÇÔ¼ö°¡Á¤ÀǵǾîÀÖÁö¾ÊÀ¸¹Ç·Î±×ºÎ¸ðŬ·¡½ºÀÇ»ý¼ºÀÚÀÎ A()°¡»ý¼ºÀڷμöÇàµË´Ï´Ù.

ÀÌ·¯ÇÑ PHP3¿Í PHP4 »çÀÌÀǹ̹¦ÇÑÂ÷À̸¦¸íÈ®È÷±¸ºÐÇÏÁö¸øÇÑ»óÅ¿¡¼­»ý¼ºÀÚ¸¦´Ù·ç°ÔµÇ¸éÇÁ·Î±×·¥À̸ſì½É°¢ÇÑ¿À·ù¿¡ºüÁú¼öÀִٴ°ÍÀ»Âü°íÇϽñâ¹Ù¶ø´Ï´Ù.

*****ÁÖÀÇ*****

PHP4¿¡¼­ÀÇ°³¼±³»¿ëÀºhttp://www.php.net/manual/en/language. ¡¤¡¤¡¤ ctor.php¿¡¼­ ¹®¼­È­µÈ ³»¿ëÀÔ´Ï´Ù¸¸ ½ÇÁ¦·Î PHP4´Â ÀÌ ¹®¼­¿Í °°ÀÌ µ¿ÀÛÇÏÁö ¾Ê´Â °ÍÀ¸·Î º¸°íµÇ°í ÀÖ½À´Ï´Ù(¾Æ·¡ ÁÖ¼Ò ÂüÁ¶ÇÒ °Í).

http://www.phpbuilder.com/lists/php-do ¡¤¡¤¡¤ 0100.php

ÀÌ·¯Çѹ®Á¦·ÎÀÎÇÏ¿©2003³â2¿ù17ÀÏ bugs.php.net¿¡°ø½ÄÀûÀ¸·Î¹ö±×¸®Æ÷ÆõǾîÀÖ½À´Ï´Ù.

http://bugs.php.net/bug.php?id=22253

2003³â2¿ù17ÀÏ´ç½Ã¿¡´Â PHP ¹öÀü4.3.1ÀÌ°ø°³µÈ½ÃÁ¡À¸·ÎÀÌÀÌÈĹöÀü¿¡¼­µµÀ̹ö±×´Â°³¼±µÇÁö¾Ê°íÀÖ½À´Ï´Ù.À§¿¡¼­¾ð±ÞÇÑwww.phpbuilder.com¿¡ÀÇÇϸé PHP3¿Í php4°¡µ¿ÀÏÇÏ°Ôµ¿ÀÛÇϸç,´ÜÁö PHP5¿¡¼­¸¸°³¼±µÈ³»¿ë´ë·Îµ¿ÀÛÇÏ°íÀÖÀ½À»¾Ë¼öÀÖ½À´Ï´Ù.




5.¹üÀ§¿¬»êÀÚ  


¹üÀ§¿¬»êÀÚ¶õ?

PHP4¿¡¼­¸¸Áö¿øµÇ¸çŬ·¡½º¿Í¸Þ½îµå¶Ç´ÂŬ·¡½º¿Í¸â¹öº¯¼ö¸¦¿¬°á½ÃÄÑÁÖ´ÂÀϷιüÀ§¿¬»êÀÚ(scope resolver)µÚ¿¡³ª¿À´Â¸Þ½îµå¿Í¸â¹öº¯¼öÀǽºÄÚÇÁ(»ç¿ë¹üÀ§)¸¦ÁöÁ¤ÇÏ´ÂÀÏÀ»Çϴ°ÍÀÔ´Ï´Ù.

Ŭ·¡½º¸í::¸Þ½îµå¸í
Ŭ·¡½º¸í::¸â¹öº¯¼ö¸í

¹üÀ§¿¬»êÀÚ»ç¿ë¸ñÀû

1.ÀνºÅϽºµÇÁö¾ÊÀºÅ¬·¡½ºÀǸ޽îµå¿¡Á¢±ÙÇÒ¶§
2.ºÎ¸ðŬ·¡½ºÀǸ޽îµå¿Í¸â¹öº¯¼ö¿¡Á¢±ÙÇÒ¶§

ÀνºÅϽºµÇÁö¾ÊÀºÅ¬·¡½º¿¡Àִ¸޽îµå¿¡Á¢±ÙÇÒ¶§



class A {
  function example(){
    echo "Ŭ·¡½º A¿¡ Á¤ÀÇµÈ ¸Þ½îµå example.
\n";
  }
}

A::example();


¾ÆÁ÷Ŭ·¡½º A¿¡´ëÇÑ°´Ã¼°¡»ý¼ºµÇ±âÀüÀÌÁö¸¸¹üÀ§¿¬»êÀÚ¸¦ÀÌ¿ëÇϸéÀϹÝÇÔ¼öó·³½ÇÇà½Ãų¼öÀÖ½À´Ï´Ù.±×·¯³ªÅ¬·¡½º A¿¡´ëÇÑ°´Ã¼°¡ÀüÇô»ý¼ºµÇ¾îÀÖÁö¾ÊÀ¸¹Ç·ÎŬ·¡½º¿ÜºÎ¿¡¼­ÀÌÇÔ¼ö¿¡Á¢±ÙÇÒ¶§´ÂÀÌÇÔ¼ö³»¿¡ $this °´Ã¼¸¦»ç¿ëÇؼ­´Â¾ÈµË´Ï´Ù.¹°·ÐÀϹÝÇÔ¼ö¿Í¸¶Âù°¡Áö·ÎÁö¿ªº¯¼ö¹×Àü¿ªº¯¼ö¸¦»ç¿ëÇÒ¼ö´ÂÀÖ½À´Ï´Ù.



class A {
  var $var ="ÃʱⰪ";

function example(){
    echo "Ŭ·¡½º A¿¡ ¼ÓÇÑ ¸Þ½îµå example.
\n";
    echo $this->var."
\n";
  }
}

A::example();


À§ÀÇ¿¹Á¦¸¦º¸¸é¾ÆÁ÷Ŭ·¡½º A¿¡´ëÇÑ°´Ã¼°¡»ý¼ºµÇÁö¾Ê¾ÒÀ¸¹Ç·Î¸â¹öº¯¼ö $var¿¡´ëÇѱâ¾ïÀå¼Ò°¡ÇÒ´çµÇÁöµµ¾Ê¾Ò°í´õ±¸³ªÃʱⰪÀ»¼³Á¤ÇÒ¼öµµ¾ø½À´Ï´Ù.±×·¯´Ï¾Æ¹«¸®¹üÀ§¿¬»êÀÚ¸¦ÀÌ¿ëÇÏ¿©¸Þ½îµå example()¿¡Á¢±ÙÇÑ´ÙÇصµ¸â¹öº¯¼ö $varÀÇÃʱⰪÀ»³ªÅ¸³¾¼ö´Â¾øÀ»°ÍÀÔ´Ï´Ù.½ÇÇèÇغ»¹Ù·Î´ÂÀÌ°æ¿ì $this->varÀÇ°ªÀÌ NULL·Î󸮵Ǵ°Ͱ°½À´Ï´Ù.

ºÎ¸ðŬ·¡½ºÀǸ޽îµå¿¡Á¢±ÙÇÒ¶§



class A {
  function example(){
    echo "Ŭ·¡½º A¿¡ Á¤ÀÇµÈ ¸Þ½îµå example.
\n";
  }
}

class B extends A {
  function example(){
    echo "Ŭ·¡½º B¿¡¼­ ÀçÁ¤ÀÇµÈ ¸Þ½îµå example.
\n";
    A::example();
  }
}

$b =new B;

$b->example();


ÀÌ¿¹ÀÇÃâ·Â°á°ú¸¦º¸¸é¾Æ·¡¿Í°°À̳ªÅ¸³¯°ÍÀÔ´Ï´Ù.

Ŭ·¡½º B¿¡¼­ÀçÁ¤Àǵȸ޽îµå example.
Ŭ·¡½º A¿¡Á¤Àǵȸ޽îµå example.

¹üÀ§¿¬»êÀÚ´ÂŬ·¡½º°¡»ó¼ÓµÇ¾úÀ»¶§ÀçÁ¤ÀǵDZâÀüÀǺθðŬ·¡½º¿¡Àִ¸޽îµå¿¡Á¢±ÙÇÒ¶§À¯¿ëÇÏ°Ô»ç¿ëµÉ¼öÀÖ½À´Ï´Ù.

ºÎ¸ðŬ·¡½ºÀǸâ¹öº¯¼ö¿¡Á¢±ÙÇÒ¶§

php.netÀǹ®¼­¼³¸í°ú´Â´Þ¸®¾ÆÁ÷°ø°³µÇÁö¾Ê´Â¾î¶²¹æ¹ýÀÌÀÖ´ÂÁö´Â¸ð¸£°ÚÀ¸³ªºÎ¸ðŬ·¡½ºÀǸâ¹öº¯¼ö·ÎÁ¢±ÙÇϴ¹æ¹ý¿¡´ëÇÏ¿©´Â¹®¼­È­µÇÁö¾ÊÀº°Í°°½À´Ï´Ù.




6.ºÎ¸ðÅ°¿öµå  


ºÎ¸ðŬ·¡½ºÀǸ޽îµåÈ£Ãâ

º¸ÅëºÎ¸ðŬ·¡½º¿¡¼­¼±¾ðµÈ¸Þ½îµå¸¦ÀÚ½ÄŬ·¡½º¿¡¼­ÀçÁ¤ÀÇÇÏ´ÂÀÌÀ¯´ÂÅ©°ÔµÎ°¡Áö°¡ÀÖ½À´Ï´Ù.

1.ºÎ¸ðŬ·¡½º¸Þ½îµå¸¦¿ÏÀüÈ÷»õ·Ó°ÔÁ¤ÀÇÇϱâÀ§ÇÏ¿©
2.ºÎ¸ðŬ·¡½º¸Þ½îµåÀDZâ´É¿¡»õ·Î¿î±â´ÉÀ»Ãß°¡ÇϱâÀ§ÇÏ¿©

ù¹ø°±â´ÉÀººÎ¸ðŬ·¡½ºÀǸ޽îµå¸¦¹«½ÃÇÏ°í¸Þ½îµå¿¡»õ·Î¿îÁ¤ÀǸ¦ÇÔÀ¸·Î½áºÎ¸ðŬ·¡½ºÀǸ޽îµåÁ¤ÀǸ¦¼û±â´Â°ÍÀÔ´Ï´Ù.±×·¯³ª¶§·Î´ÂºÎ¸ðŬ·¡½ºÀǸ޽îµå¸¦¸ðµÎÁö¿ì´Â°Íº¸´Ù´ÂÃß°¡ÀûÀαâ´ÉÀÌÇÊ¿äÇÑ°æ¿ì°¡ÀÖ½À´Ï´Ù.ÀÌ°°Àº°æ¿ì¿¡´ÂºÎ¸ðŬ·¡½ºÀǸ޽îµå¿ÍÀÚ½ÄŬ·¡½º¿¡¼­ÀçÁ¤Àǵȸ޽îµå¸¦¸ðµÎ¼öÇàÇϰԵɰÍÀÔ´Ï´Ù.Áï,ÀçÁ¤Àǵȸ޽îµå±¸¹®³»¿¡¼­ºÎ¸ðŬ·¡½ºÀǸ޽îµå¸¦È£ÃâÇÒ¼öÀÖ¾î¾ßÇϸçÇÊ¿äÇѱâ´É¸¸Ãß°¡ÀûÀ¸·ÎÀÛ¼ºÇϸéµÉ°ÍÀÔ´Ï´Ù.ÀÌ·²¶§ºÎ¸ðŬ·¡½ºÀǸ޽îµå¸¦È£ÃâÇϱâÀ§Çؼ­»ç¿ëÇÏ´ÂÅ°¿öµå°¡ parentÀÔ´Ï´Ù.ÀÚ¹Ù¿¡¼­ÀÇÅ°¿öµåsuper¿Í°°Àº¿ªÇÒÀ»ÇϸçÀÌ°ÍÀº±×¸Þ½îµåÈ£ÃâÀ»»óÀ§Å¬·¡½º·ÎÀü´ÞÇÕ´Ï´Ù.

ºÎ¸ðÅ°¿öµå parent´Â $this Å°¿öµå¿Íºñ½ÁÇÏ°ÔÀÌŬ·¡½ºÀǺθðŬ·¡½º¸¦³ªÅ¸³»´ÂÀ§Ä¡ÁöÁ¤ÀÚÀÔ´Ï´Ù.ÇöÀçŬ·¡½ºÀǺθðŬ·¡½º¸¦ÂüÁ¶ÇؾߵǴ°æ¿ì¿¡´ÂºÎ¸ðÅ°¿öµå parent¸¦»ç¿ëÇÒ¼öÀÖ½À´Ï´Ù.



class A {
  function example(){
    echo "Ŭ·¡½º A¿¡ Á¤ÀÇµÈ ¸Þ½îµå example.
\n";
  }
}

class B extends A {
  function example(){
    echo "Ŭ·¡½º B¿¡¼­ ÀçÁ¤ÀÇµÈ ¸Þ½îµå example.
\n";
    parent::example();
  }
}

$b =new B;

$b->example();


ÀÌ¿¹ÀÇÃâ·Â°á°ú¸¦º¸¸é¾Æ·¡¿Í°°À̳ªÅ¸³¯°ÍÀÔ´Ï´Ù.

Ŭ·¡½º B¿¡¼­ÀçÁ¤Àǵȸ޽îµå example.
Ŭ·¡½º A¿¡Á¤Àǵȸ޽îµå example.

¾ÕÀå¹üÀ§¿¬»êÀÚ¿¡¼­¼³¸íÇÑ´ë·ÎÅ°¿öµå parent ´ë½Å¿¡extends´ÙÀ½¿¡±â¼úµÈºÎ¸ðŬ·¡½º¸íÀ»Á÷Á¢»ç¿ëÇصµµË´Ï´Ù.

parent::example();  ------>  A::example();

Å°¿öµå parent¸¦½á¾ßµÉÀÌÀ¯

À§ÀÇ¿¹¿¡¼­ºÎ¸ðŬ·¡½º¸¦ A°¡¾Æ´Ñ A1À¸·ÎºÎÅÍ»ó¼Ó¹Þµµ·Ï¼öÁ¤ÇÏ¿©¾ßÇÑ´Ù¸é¾Æ·¡¿Í°°ÀÌextends´ÙÀ½¿¡ÀִºθðŬ·¡½º¸íÀ»º¯°æÇϴ°ÍÀ¸·Î¸ðµçÀÛ¾÷Àº³¡³ª°ÔµË´Ï´Ù.¸¸¾à parent::example()°¡¾Æ´Ñ A::example()¶ó°íÀÛ¼ºÇÏ¿´¾ú´Ù¸éÀ̺κеµ A1::example()¶ó°í¼öÁ¤ÇÏ¿©¾ßÇÒ°ÍÀÔ´Ï´Ù.°á±¹¼öÁ¤ÇÒ¶§¼ÕÀÌ´õ¸¹ÀÌ°¡¾ßÇϴ°ÍÀÌÁö¿ä.±×·¯´ÏºÎ¸ðŬ·¡½º¿¡Àִ¸޽îµå¿¡Á¢±ÙÇϴ°æ¿ì¶ó¸éÅ°¿öµå parent¸¦ÀÌ¿ëÇϴ°ÍÀ̼ҽºÄڵ带°ü¸®Çϴµ¥ÈξÀÀ¯¸®ÇÒ°ÍÀÔ´Ï´Ù.



class B extends A1 {
  function example(){
    echo "Ŭ·¡½º B¿¡¼­ ÀçÁ¤ÀÇµÈ ¸Þ½îµå example.
\n";
    parent::example();
  }
}

$b =new B;

$b->example();




7¸ÅÁ÷ÇÔ¼ö  


__sleep, __wakeup°ú°°ÀÌ"__"·Î½ÃÀÛÇϴ¸ÅÁ÷ÇÔ¼ö(magic function)´Â PHP Ŭ·¡½º³»¿¡¼­Æ¯¼öÇѸñÀûÀ¸·Î»ç¿ëµË´Ï´Ù.µû¶ó¼­ÀÌÇÔ¼öµéÀÌ°¡Áö°íÀִ¹®¼­È­µÈ¸ÅÁ÷±â´ÉÀ»»ç¿ëÇÒÇÊ¿ä°¡¾ø´Ù¸éŬ·¡½º³»¿¡ÀÌÇÔ¼öµéÀ»Á¤ÀÇÇؼ­´Â¾ÈµË´Ï´Ù.

__sleep

serialize ÇÔ¼ö¸¦ÅëÇØ°´Ã¼¸¦Á÷·ÄÈ­ÇÒ¶§ÇØ´çŬ·¡½º¿¡¸ÅÁ÷ÇÔ¼ö __sleep°¡Á¤ÀǵǾîÀÖ´ÂÁöÈ®ÀÎÇÕ´Ï´Ù.¸¸¾àÁ¤ÀǵǾîÀִٸ鰴ü¸¦Á÷·ÄÈ­ÇϱâÀü¿¡ __sleep ÇÔ¼ö¸¦¼öÇàÇÕ´Ï´Ù.ÀÌÇÔ¼ö´ÂÁ÷·ÄÈ­ÇϱâÀü¿¡°´Ã¼¸â¹ö¿¡´ëÇÏ¿©Á¶ÀÛÇؾßÇÏ´ÂÀÛ¾÷,¶Ç´ÂÁ÷·ÄÈ­ÇϱâÀü¿¡¹Ì¸®¼öÇàÇؾßÇÏ´ÂÀÛ¾÷(¿¹¸¦µé¾îµ¥ÀÌÅͺ£À̽º¿¬°áÁ¾·áµî)À»¼öÇàÇÒ¼öÀÖ½À´Ï´Ù. __sleep ÇÔ¼ö´ÂÁ÷·ÄÈ­ÇÒ°´Ã¼ÀǸðµç¸â¹öº¯¼öÀÇÀ̸§À»º¯¼ö¿¡´ã¾Æ¹ÝȯÇÕ´Ï´Ù.



classScott{
  var $error;
  var $svar = array();

functionScott(){
    $this->svar['Hello']="World";
  }

function __sleep(){
    $this->svar['Hello']="Yawn";
    // return list of instance-variables to be serialized
    return array('error','svar');
  }
}

$x =newScott();
print_r($x);
$y = serialize($x);
$z = unserialize($y);
print_r($z);

__wakeup


unserialize ÇÔ¼ö¸¦ÅëÇع®ÀÚ¿­À»°´Ã¼È­ÇÒ¶§ÇØ´çŬ·¡½º¿¡¸ÅÁ÷ÇÔ¼ö __wakeup°¡Á¤ÀǵǾîÀÖ´ÂÁöÈ®ÀÎÇÕ´Ï´Ù.¸¸¾àÁ¤ÀǵǾîÀִٸ鰴üȭÇϱâÀü¿¡ __wakeup ÇÔ¼ö¸¦¼öÇàÇÕ´Ï´Ù.ÀÌÇÔ¼ö¸¦¼öÇàÇÒ¶§°´Ã¼È­ÇϱâÀü¿¡°´Ã¼¸¦»ó´ë·Î¼öÇàÇؾßÇÏ´ÂÀÛ¾÷,¶Ç´Â°´Ã¼È­ÇϱâÀü¿¡¹Ì¸®¼öÇàÇؾßÇÏ´ÂÀÛ¾÷(¿¹¸¦µé¾îµ¥ÀÌÅͺ£À̽º¿¬°áµî)À»¼öÇàÇÒ¼öÀÖ½À´Ï´Ù.



classScott{
  var $error;
  var $svar = array();

functionScott(){
    $this->svar['Hello']="World";
  }

function __sleep(){
    $this->svar['Hello']="Yawn";
    // return list of instance-variables to be serialized
    return array('error','svar');
  }

function __wakeup(){
    $this->svar['test']="I'm here!";
  }
}

$x =newScott();
print_r($x);
$y = serialize($x);
$z = unserialize($y);
print_r($z);
ÃßõÃßõ : 254 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
1,312
preg match¿¡ °üÇÑ Á¤±Ô½Ä
1,311
PHP $ SERVER ȯ°æ º¯¼ö Á¤¸®
1,310
PHP ÇöÀç ÆäÀÌÁöÀÇ µµ¸ÞÀθíÀ̳ª urlµîÀÇ Á¤º¸ ¾Ë¾Æ¿À±â
1,309
PHP preg match all()
1,308
PHP ·Î À¥ÆäÀÌÁö ±Ü¾î¿À±â ¸ðµç ¹æ¹ý ÃÑÁ¤¸®!
1,307
[PHP] ¿ø°ÝÁö ÆÄÀÏ ÁÖ¼Ò ³ëÃâ ¾ÈÇÏ°í curl·Î ´Ù¿î·Îµå ¹Þ±â
1,306
PHP ÇÔ¼ö Á¤¸®
1,305
PHP ¹è¿­¿¡¼­ ¹«ÀÛÀ§·Î Çϳª »Ì¾ÆÁÖ´Â array rand() ÇÔ¼ö
1,304
PHP Á¤±Ô½Ä Á¤¸®
1,303
PHP Á¤±Ô½ÄÀ» È°¿ëÇÑ ÅÂ±× ¹× ƯÁ¤ ¹®ÀÚ¿­ Á¦°Å ¹× ÃßÃâ ¹æ¹ý
1,302
php Å©·Ñ¸µ ¶Ç´Â ÆÄ½Ì ÇÔ¼ö, Á¤±Ô½Ä ¸ðÀ½
1,301
Á¦ÀÌÄõ¸® ±âº» ¸í·É¾î
1,300
PHP ÆÄÀÏ Á¸Àç ¿©ºÎ ÆľÇÇϱâ(·ÎÄà ÆÄÀÏ Á¸Àç ¹× ¿ø°ÝÁö ÆÄÀÏ Á¸Àç)
1,299
ÅÂ±× »çÀÌ¿¡ ÀÖ´Â ÅؽºÆ®¸¦ ÃßÃâ
1,298
»ç¿ëÀÚ ÇÔ¼ö ¸ðÀ½
1,297
¸¶¿ì½º,Å°º¸µå Á¦ÇÑ ( ¿À¸¥ÂÊŬ¸¯,µå·¡±×,¿µ¿ª¼±Åõî..)
1,296
PHP - ƯÁ¤ ÅÂ±× ¹× ¹®ÀÚ¿­ ÃßÃâ, Á¦°Å
1,295
[PHP] define°ú definedÀÇ Â÷ÀÌ
1,294
¿ìŬ¸¯ ¿Ïº®Â÷´Ü ½ºÅ©¸³Æ®
1,293
[PHP] dirname()ÇÔ¼ö¿Í $_SERVER °ü·Ã »ó¼öµé
1,292
[PHP] ÆÄÀÏ Å©±â, »çÀÌÁî ºÒ·¯¿À´Â ÇÔ¼ö, filesize()
1,291
[jQuery] jQuery Quick API
1,290
PHP 5.3.0 ¿¡¼­ »ç¶óÁø ÇÔ¼öµé ´ëü
1,289
¾î¶² ÆÄÀϵéÀÌ include ³ª require µÇ¾ú´ÂÁö È®ÀÎÇÏ´Â ÇÔ¼ö(get_included_files)
1,288
°ªÀÌ ¹è¿­ ¾È¿¡ Á¸ÀçÇÏ´ÂÁö È®ÀÎÇÏ´Â in_arrayÇÔ¼ö
1,287
UTF8 ÇÑ±Û ÀÚ¸£±â..
1,286
iconv ¿¡·¯ ¹ß»ý½Ã °è¼Ó ó¸®Çϱ⠿ɼÇ
1,285
[PHP] ÇöÀç ÆäÀÌÁöÀÇ µµ¸ÞÀÎ , URL Á¤º¸ ¾Ë¾Æ³»±â.
1,284
[PHP] ¸·°­ ±â´É ¹è¿­..
1,283
[JqueryMobile] - ÇöÀçÈ­¸éÀÇ °¡·Î¼¼·Î »çÀÌÁî ±¸Çϱâ
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.