ホームページ >バックエンド開発 >PHPチュートリアル >PHP オブジェクトは値または参照の割り当てを使用しますか?

PHP オブジェクトは値または参照の割り当てを使用しますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-22 07:25:02898ブラウズ

Do PHP Objects Use Value or Reference Assignment?

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");
    }
}

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

Bar::test() メソッドが実行されると、 Foo オブジェクトの配列内の 5 番目のオブジェクトの値を変更します。この変更は、出力に見られるように、元のオブジェクトに反映されます。

Foo #5
My value has now changed

この動作は、$testFoo 変数へのオブジェクト参照の割り当てによるものです。変数はオブジェクトを直接指すため、変数を介して行われた変更は元のオブジェクトに反映されます。

参照ではなく値によってオブジェクトを割り当てるには、clone キーワードを使用できます:

<code class="php">$testFoo = clone $this->getFoo(5);</code>

以上がPHP オブジェクトは値または参照の割り当てを使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。