PHP에서 객체 할당 결정
PHP 프로그래밍에서 객체는 값이나 참조로 할당될 수 있습니다. 이러한 구별은 개체에 대한 변경 사항이 코드의 다른 부분에 반영되는 방식에 영향을 미칩니다.
다음 코드를 고려해 보겠습니다.
<code class="php">class Foo { var $value; function foo($value) { $this->setValue($value); } function setValue($value) { $this->value = $value; } } class Bar { var $foos = array(); function Bar() { for ($x = 1; $x <= 10; $x++) { $this->foos[$x] = new Foo("Foo # $x"); } } function getFoo($index) { return $this->foos[$index]; } function test() { $testFoo = $this->getFoo(5); $testFoo->setValue("My value has now changed"); } }</code>
질문이 생깁니다. "Bar::test( )" 메소드가 실행되면 "Foo" 객체 배열의 "foo # 5"를 수정하면 실제 "foo # 5" 객체 자체에 영향을 미치나요? 아니면 별도의 지역 변수 "testFoo"가 생성되나요?
답:
답을 결정하려면 코드를 실행하고 출력을 관찰하면 됩니다.
<code class="php">$b = new Bar; echo $b->getFoo(5)->value; $b->test(); echo $b->getFoo(5)->value;</code>
위 코드의 출력은 다음과 같습니다.
Foo #5 My value has now changed
이는 "testFoo" 개체에 대한 변경 사항이 배열의 실제 "foo # 5" 개체에 영향을 미친다는 것을 나타냅니다. 이 동작은 기본적으로 객체에 적용되는 PHP 5의 "참조에 의한 할당" 개념에 기인합니다.
의미:
참조에 의한 할당은 후속 작업을 보장합니다. 객체에 대한 변경 사항은 코드 전체에 반영됩니다. 그러나 객체의 독립적인 복사본을 생성하려는 경우 "clone" 키워드를 활용하여 값 기반 할당을 수행할 수 있습니다.
위 내용은 참조에 의한 할당이 PHP의 객체 수정에 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!