>  기사  >  백엔드 개발  >  참조에 의한 할당이 PHP의 객체 수정에 영향을 줍니까?

참조에 의한 할당이 PHP의 객체 수정에 영향을 줍니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-22 07:22:02792검색

Does Assignment by Reference Affect Object Modification in PHP?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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