L'affectation par référence affecte-t-elle la modification d'objet en PHP ?

Mary-Kate Olsen
Libérer: 2024-10-22 07:22:02
original
857 Les gens l'ont consulté

Does Assignment by Reference Affect Object Modification in PHP?

Détermination de l'affectation d'objets en PHP

Dans la programmation PHP, les objets peuvent être attribués par valeur ou par référence. Cette distinction affecte la manière dont les modifications apportées à un objet se reflètent dans d'autres parties du code.

Considérons le code suivant :

<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>
Copier après la connexion

La question se pose : lorsque le "Bar::test( )" est exécutée, la modification de "foo # 5" dans le tableau d'objets "Foo" affectera-t-elle l'objet "foo # 5" lui-même ou créera-t-elle une variable locale distincte "testFoo" ?

Réponse :

Pour déterminer la réponse, nous pouvons exécuter le code et observer le résultat :

<code class="php">$b = new Bar;
echo $b->getFoo(5)->value;
$b->test();
echo $b->getFoo(5)->value;</code>
Copier après la connexion

Le résultat du code ci-dessus devrait être :

Foo #5
My value has now changed
Copier après la connexion

Cela indique que la modification apportée à l'objet "testFoo" affecte l'objet "foo # 5" réel dans le tableau. Ce comportement est attribué au concept « d'affectation par référence » dans PHP 5, qui s'applique aux objets par défaut.

Implications :

L'affectation par référence garantit que les les modifications apportées à un objet sont reflétées dans tout le code. Cependant, si vous souhaitez créer une copie indépendante d'un objet, vous pouvez utiliser le mot-clé « clone » pour effectuer une affectation basée sur la valeur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal