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

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

不言
不言original
2018-04-20 11:48:511690parcourir

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



?>



À ce moment, $b = $a, le stockage en mémoire ressemble à ceci :


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.
Donnez également un exemple simple :

 <br>
<?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);

Résultat de l'exécution :

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

NULL 

NULL



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

$b = $a;

$c =& $a;



Lors de l'attribution d'une instance d'objet à une nouvelle variable, la nouvelle variable accédera à la même instance.
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.


$a = null;




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 :

$f = new Person();

$b = clone $f; //创建一个对象副本




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!

Déclaration:
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