update : 2015.11.03
php.shukuma.com

검색:
 
 
객체와 참조

객체와 참조

PHP 5 OOP에서 자주 언급되는 키포인트중에 하나가 바로 "객체는 기본적으로 passed by reference 이다" 입니다. 이것은 옳은 말은 아닙니다. 이 섹션에서는 몇가지 예제를 통해 그것을 바로잡을 것입니다.

PHP의 참조는 별칭입니다. 이는 서로 다른 변수가 같은 값을 사용할 수 있게 합니다. PHP 5 이후에는 객체자체를 변수에 지니지 않습니다. 변수는 그저 객체 식별자를 가지게 되어, 식별자는 진짜 객체를 찾기 위한 용도로 사용됩니다. 객체가 인자로 넘어갈때, 다른변수에 반환 또는 할당될때, 이 변수들은 별칭이 아닙니다.: 식별자의 복사하여 가지게 되며, 이 식별자들은 같은 객체를 가리킵니다.

Example #1 References and Objects

<?php
class {
    public 
$foo 1;
}  

$a = new A;
$b $a;     // $a 와 $b 는 같은 식별자를 가집니다.
             // ($a) = ($b) = <id>
$b->foo 2;
echo 
$a->foo."\n";


$c = new A;
$d = &$c;    // $c 와 $d 는 참조이다
             // ($c,$d) = <id>

$d->foo 2;
echo 
$c->foo."\n";


$e = new A;

function 
foo($obj) {
    
// ($obj) = ($e) = <id>
    
$obj->foo 2;
}

foo($e);
echo 
$e->foo."\n";

?>

위 예제의 출력:

2
2
2