이 글의 내용은 그래픽 및 텍스트 분석에서 PHP 개체의 할당 작업이 "값으로 전달"인지 "주소로 전달"인지에 대한 것입니다. 이제 필요한 친구들과 공유합니다. 참고하시면 됩니다
변수는 기본적으로 항상 값으로 할당된다는 것을 알고 있습니다. 즉, 표현식의 값이 변수에 할당되면 원래 표현식 전체의 값이 대상 변수에 할당됩니다. 즉, 한 변수의 값이 다른 변수에 할당되면 한 변수의 값을 변경해도 다른 변수에는 영향을 미치지 않습니다.
간단한 예:
<?php $a = 'hello world'; $b = $a; $a = 'bey world'; 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 = 'gavin'; $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 중국어 웹사이트의 기타 관련 기사를 참조하세요!