Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah Tugasan melalui Rujukan Mempengaruhi Pengubahsuaian Objek dalam PHP?

Adakah Tugasan melalui Rujukan Mempengaruhi Pengubahsuaian Objek dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-22 07:22:02789semak imbas

Does Assignment by Reference Affect Object Modification in PHP?

Menentukan Tugasan Objek dalam PHP

Dalam pengaturcaraan PHP, objek boleh ditetapkan oleh sama ada nilai atau rujukan. Perbezaan ini mempengaruhi cara perubahan yang dibuat pada objek mencerminkan bahagian lain kod.

Mari kita pertimbangkan kod berikut:

<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>

Persoalan timbul: apabila "Bar::test( )" kaedah dilaksanakan, adakah mengubah suai "foo # 5" dalam tatasusunan objek "Foo" menjejaskan objek "foo # 5" sebenar itu sendiri atau mencipta pembolehubah tempatan yang berasingan "testFoo"?

Jawapan:

Untuk menentukan jawapan, kita boleh melaksanakan kod dan memerhatikan output:

<code class="php">$b = new Bar;
echo $b->getFoo(5)->value;
$b->test();
echo $b->getFoo(5)->value;</code>

Output untuk kod di atas dijangkakan ialah:

Foo #5
My value has now changed

Ini menunjukkan bahawa perubahan yang dibuat pada objek "testFoo" mempengaruhi objek "foo # 5" sebenar dalam tatasusunan. Tingkah laku ini dikaitkan dengan konsep "tugasan melalui rujukan" dalam PHP 5, yang digunakan pada objek secara lalai.

Implikasi:

Tugasan melalui rujukan memastikan bahawa tindakan seterusnya perubahan pada objek dicerminkan sepanjang kod. Walau bagaimanapun, jika anda ingin membuat salinan bebas objek, anda boleh menggunakan kata kunci "klon" untuk melaksanakan tugasan berasaskan nilai.

Atas ialah kandungan terperinci Adakah Tugasan melalui Rujukan Mempengaruhi Pengubahsuaian Objek dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn