>  기사  >  백엔드 개발  >  그래픽 및 텍스트 분석: PHP 개체의 할당 작업이 "값에 의한 전달"입니까, 아니면 "주소에 의한 전달"입니까?

그래픽 및 텍스트 분석: PHP 개체의 할당 작업이 "값에 의한 전달"입니까, 아니면 "주소에 의한 전달"입니까?

不言
不言원래의
2018-04-20 11:48:511681검색

이 글의 내용은 그래픽 및 텍스트 분석에서 PHP 개체의 할당 작업이 "값으로 전달"인지 "주소로 전달"인지에 대한 것입니다. 이제 필요한 친구들과 공유합니다. 참고하시면 됩니다


변수는 기본적으로 항상 값으로 할당된다는 것을 알고 있습니다. 즉, 표현식의 값이 변수에 할당되면 원래 표현식 전체의 값이 대상 변수에 할당됩니다. 즉, 한 변수의 값이 다른 변수에 할당되면 한 변수의 값을 변경해도 다른 변수에는 영향을 미치지 않습니다.

간단한 예:

<?php 



$a = &#39;hello world&#39;;



$b = $a;



$a = &#39;bey world&#39;;







var_dump($a);



var_dump($b);



?>



이 때, $b = $a, 메모리의 저장 공간은 대략 다음과 같습니다.


하지만 객체가 인스턴스화되면 객체를 전달하는 대신 객체가 전송됩니다. 값, 객체의 주소가 전달됩니다. 즉, 시간이 많이 걸리고 메모리 집약적이므로 전체 개체가 복사되지 않습니다.
간단한 예도 들어보세요:

 <br>
<?php
class Person
{
    public $name;
    public $age;
}
 
$a = new Person();
$b = $a;
$c = &$a;
$a->name = &#39;gavin&#39;;
$a = null;
 
var_dump($b);
var_dump($a);
var_dump($c);

실행 결과:

object(Person)#1 (2) { ["name"]=> string(5) "gavin" ["age"]=> NULL } 

NULL 

NULL



위 예에서 변수의 연산 과정은 대략 다음과 같습니다.

$b = $a;

$c =& $a;



객체 인스턴스를 새 객체에 할당할 때 변수인 경우 새 변수 Variables는 동일한 인스턴스에 액세스합니다.
참조 할당(&)은 새 변수가 원래 변수를 참조한다는 의미입니다. 즉, 해당 변수의 "별칭" 또는 "포인터"가 됩니다. 새 변수를 변경하면 원래 변수에 영향을 미치며 그 반대의 경우도 마찬가지입니다.


$a = null;




아마도 직접 할당은 객체를 복사하지 않는데 어떻게 객체를 복사할 수 있느냐고 물으실 것입니다. PHP에서 객체를 복제하고 복사하려면 clone 연산자를 사용하세요.

$f = new Person();

$b = clone $f; //创建一个对象副本




이 글을 통해 PHP에서 객체 할당 작업을 공유했습니다. 복사된 개체입니다. PHP에서 clone 연산자를 사용하여 객체를 복사할 수 있습니다. 제 능력에는 한계가 있습니다. 이 기사에서 "버그"를 발견하면 언제든지 조언을 주시기 바랍니다. 동시에 다른 질문이나 통찰력이 있으면 언제든지 공유해 주시기 바랍니다. 우리는 함께 배우고, 함께 소통하며, 함께 발전해 나갑니다.

관련 권장 사항:

PHP 객체 복제 구현 방법


위 내용은 그래픽 및 텍스트 분석: PHP 개체의 할당 작업이 "값에 의한 전달"입니까, 아니면 "주소에 의한 전달"입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.