Le contenu de cet article indique si l'opération d'affectation des objets PHP dans l'analyse graphique et textuelle est "passage par valeur" ou "passage par adresse". Maintenant, je le partage avec vous. besoin peut s'y référer
Nous savons que les variables sont toujours affectées par valeur par défaut. Autrement dit, lorsque la valeur d'une expression est affectée à une variable, la valeur de l'expression d'origine entière est affectée à la variable cible. Cela signifie que lorsque la valeur d'une variable est affectée à une autre variable, la modification de la valeur d'une variable n'affectera pas l'autre variable.
Un exemple simple :
<?php $a = 'hello world'; $b = $a; $a = 'bey world'; var_dump($a); var_dump($b); ?>
<br/>À ce moment, $b = $a, le stockage en mémoire ressemble à ceci : <br/>
<br/>Mais lorsqu'un objet est instancié, l'objet n'est pas transmis par valeur, mais l'adresse de l'objet est transmise. Autrement dit, l'objet entier n'est pas copié, car cela prendrait beaucoup de temps et de mémoire. <br/>Donnez également un exemple simple : <br/>
<br/>
<?php class Person { public $name; public $age; } $a = new Person(); $b = $a; $c = &$a; $a->name = 'gavin'; $a = null; var_dump($b); var_dump($a); var_dump($c);
Résultat de l'exécution : <br/> <br/>
object(Person)#1 (2) { ["name"]=> string(5) "gavin" ["age"]=> NULL } NULL NULL
<br/>Ce qui précède exemple Le processus de fonctionnement des variables est à peu près le suivant : <br/>
$b = $a; $c =& $a;
<br/>Lors de l'attribution d'une instance d'objet à une nouvelle variable, la nouvelle variable accédera à la même instance. <br/>L'affectation de référence (&) signifie que la nouvelle variable fait référence à la variable d'origine, en d'autres termes, devient son « alias » ou son « pointeur ». Changer la nouvelle variable affectera la variable d'origine et vice versa. <br/>
<br/>
$a = null;
<br/>
Peut-être demanderez-vous, puisque l'affectation directe ne copie pas l'objet, comment pouvez-vous copier l'objet ? Du drap de laine ? Pour cloner un objet de copie en PHP, utilisez l'opérateur de clonage : <br/>
$f = new Person(); $b = clone $f; //创建一个对象副本
Recommandations associées :
Comment implémenter le clonage d'objets PHP
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!