Maison > développement back-end > tutoriel php > Explication détaillée de la méthode de transfert de valeur d'objet en php

Explication détaillée de la méthode de transfert de valeur d'objet en php

王林
Libérer: 2023-04-07 11:26:01
original
3403 Les gens l'ont consulté

Explication détaillée de la méthode de transfert de valeur d'objet en php

Comparaison entre l'affectation de variables et l'affectation d'objets

 <?php 
     // 声明一个变量并赋值 
     $a = 1; 
     // 将数据类型的值 赋值 给一个变量 
     $b = $a; 
  
     // 修改$a的值 
     $a = 2; 
     // $a和$b是两个独立的内存空间修改其中一个另一个不受影响
     echo $b; // 1 
 
     class Person
    {
         public $name;
         public $age;
    }
     // 将对象类型的数据 赋值 给一个变量
     $p = new Person;
     // 通过对属性修改值,来确定面向对象中 对象的传值方式
     $p->name = &#39;jesse&#39;;
     // 若是成功修改值,则是引用传值 
     echo $p->name; // jesse

 ?>
Copier après la connexion

Explication du cas :

Ici, la méthode d'affectation des variables et la Les méthodes d'affectation d'objet sont comparées Par rapport à la méthode d'affectation, la méthode d'affectation à la ligne 5 du code est "affectation de copie", donc lorsque la valeur source (la valeur de $a) est modifiée, la valeur de $b n'est pas affectée . Le diagramme de relation mémoire de $a et $b est le suivant :

Explication détaillée de la méthode de transfert de valeur dobjet en php

La ligne 20 du code attribue le type de données à la variable $p et modifie avec succès la valeur à l'intérieur l'objet via $p. Comparez les variables La méthode de passage de valeur prouve qu'il s'agit d'un passage de référence. Le diagramme de relation mémoire est le suivant :

Explication détaillée de la méthode de transfert de valeur dobjet en php

Et la ligne 20 du Le code attribue le type de données à la variable $p et modifie l'intérieur de l'objet via $p La valeur est réussie. En comparant la méthode de transfert de valeur de la variable, il est prouvé qu'il s'agit d'un transfert de référence. Le diagramme de relation mémoire est le suivant. suit :

<?php 
    class Person
    {
        public $name;
        public $age;
        // 将对象类型的数据 赋值 给一个变量
         $p = new Person;
         // 通过对属性修改值,来确定面向对象中 对象的传值方式
        $p->name = &#39;jesse&#39;;
        // 将对象赋予另一变量
        $m = $p;
        // 另一变量修改属性值
        $m->name = &#39;Marry&#39;;
         // 输出源变量 赋值变量访问内部属性的结果
        echo $p->name, $m->name;
    }
?>
Copier après la connexion

La 12ème ligne de code est le code le plus "glaçage" de cet article. Le côté droit du signe égal est un objet, et le côté gauche est une variable, voici donc le dièse. question, est-ce que $m copie l'objet ? Ou le passer par référence ? La relation mémoire de ce code est la suivante :

Explication détaillée de la méthode de transfert de valeur dobjet en php

Ainsi, les valeurs d'attribut des deux derniers objets sont modifiées pour Marry !!!

Puis en passant par référence, quelle est la situation ?

 <?php 
     class Person
     {
         public $name; 
         public $age; 
     } 
     // 将对象类型的数据 赋值 给一个变量 
     $p = new Person; 
     // 通过对属性修改值,来确定面向对象中 对象的传值方式
     $p->name = &#39;jesse&#39;;
     // 将对象赋予另一变量
     $m = &$p;
     // 另一变量修改属性值
     $m->name = &#39;Marry&#39;;
     // 输出源变量 赋值变量访问内部属性的结果
     echo $p->name, $m->name;
 ?>
Copier après la connexion

Explication détaillée de la méthode de transfert de valeur dobjet en php

Pour plus de contenu connexe, veuillez visiter le site Web PHP chinois : Tutoriel vidéo 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