Adakah Tugasan melalui Rujukan Mempengaruhi Pengubahsuaian Objek dalam PHP?

Mary-Kate Olsen
Lepaskan: 2024-10-22 07:22:02
asal
857 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Output untuk kod di atas dijangkakan ialah:

Foo #5
My value has now changed
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan