Analyse graphique et textuelle : L'opération d'affectation des objets PHP est-elle « passant par valeur » ou « passant par adresse » ?

不言
Libérer: 2023-03-24 13:52:01
original
1693 Les gens l'ont consulté

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 = &#39;hello world&#39;;



$b = $a;



$a = &#39;bey world&#39;;







var_dump($a);



var_dump($b);



?>
Copier après la connexion


<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/>
Copier après la connexion
<?php
class Person
{
    public $name;
    public $age;
}
 
$a = new Person();
$b = $a;
$c = &$a;
$a->name = &#39;gavin&#39;;
$a = null;
 
var_dump($b);
var_dump($a);
var_dump($c);
Copier après la connexion

Résultat de l'exécution : <br/> <br/>

object(Person)#1 (2) { ["name"]=> string(5) "gavin" ["age"]=> NULL } 

NULL 

NULL
Copier après la connexion


<br/>Ce qui précède exemple Le processus de fonctionnement des variables est à peu près le suivant : <br/>

$b = $a;

$c =& $a;
Copier après la connexion


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


<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; //创建一个对象副本
Copier après la connexion




A travers cet article, nous avons partagé l'opération d'affectation des objets en PHP L'adresse de l'objet est passée au lieu de copier l'objet. Vous pouvez utiliser l'opérateur clone en PHP pour copier des objets. Mes capacités sont limitées. Si vous trouvez des « bugs » dans cet article, n'hésitez pas à me donner quelques conseils. En même temps, si vous avez d'autres questions ou idées, partagez-les et communiquez. Nous apprenons ensemble, communiquons ensemble et progressons ensemble.

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal