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!