引用賦值會影響 PHP 中的物件修改嗎?

Mary-Kate Olsen
發布: 2024-10-22 07:22:02
原創
789 人瀏覽過

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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!