2011-04-09 2 views
3

,이 간단한 클래스를 가지고개체 참조 PHP에서

<?php 
class Person { 
    var $first_name = "factory method"; 
} 
?> 

내가 만약 내가이 질문은 :

$person1 = new Person(); 
$person2 = $person1; 

$person1 = null; 

var_dump($person1); 
var_dump($person2); 

내가 무엇을 얻을 것은 : 모두 $ PERSON1 = null이$ person2는 null이 아닙니다., $ person1과 $ person2가 같은 것을 가리키고 있지 않습니다. 나는 다음과 같은 것을 할 때

하지만 :

$person1 = new Person(); 
$person2 = $person1; 
$person2->first_name = "programming"; 

echo $person1->first_name; 
echo $person2->first_name; 

내가 같은 일 "프로그래밍"을 가지고, 그래서 $ PERSON1 및 $ PERSON2 모두 같은 일을 가리키는 생각합니다.

누군가 내게 설명 할 수 있습니까?

+0

http://php.net/manual/en/language.oop5.references.php 및 의견을 참조하십시오. – netcoder

답변

2

포인터를 참조로 사용하지 마십시오. $person1 = null; 이후에이 변수는 다른 값을 나타냅니다. 변수에 다른 값을 지정하기 때문입니다.

$person1 = $person2 = new Person; 

둘 다 동일한 단일 개체 인스턴스를 참조합니다. $person2->first_name을 사용하면 개체를 계속 나타내는 변수가 아닌이 개체를 변경할 수 있습니다.

0

첫 번째 예제에서 $ person1을 null로 설정하면 더 이상 $ Person2가 작성한 Person 오브젝트를 참조하지 않습니다.

두 번째 예에서 $ person과 $ person2는 모두 같은 개체를 참조합니다.

References에 대한 PHP 설명서를 참조하십시오.

관련 문제