Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Objektwertübertragungsmethode in PHP

Detaillierte Erläuterung der Objektwertübertragungsmethode in PHP

王林
王林Original
2019-09-02 17:55:553380Durchsuche

Detaillierte Erläuterung der Objektwertübertragungsmethode in PHP

Vergleich zwischen Variablenzuweisung und Objektzuweisung

 <?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

 ?>

Fallerklärung:

Hier wird die Zuweisungsmethode von Variablen und die Die Objektzuweisungsmethode wird verglichen. Im Vergleich zur Zuweisungsmethode lautet die Zuweisungsmethode in Zeile 5 des Codes „Zuweisung kopieren“. Wenn also der Quellwert (der Wert von $a) geändert wird, wird der Wert von $b nicht beeinflusst . Das Speicherbeziehungsdiagramm von $a und $b lautet wie folgt:

Detaillierte Erläuterung der Objektwertübertragungsmethode in PHP

Zeile 20 des Codes weist den Datentyp der Variablen $p zu und ändert den darin enthaltenen Wert erfolgreich das Objekt durch $p. Vergleichen Sie die Variablen. Die Wertübergabemethode beweist, dass es sich um eine Referenzübergabe handelt. Das Speicherbeziehungsdiagramm lautet wie folgt:

Detaillierte Erläuterung der Objektwertübertragungsmethode in PHP

Und Zeile 20 des Der Code weist der Variablen $p den Datentyp zu und ändert das Innere des Objekts über $p. Der Vergleich der Wertübertragungsmethode der Variablen zeigt, dass es sich um eine Referenzübertragung handelt folgt:

<?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;
    }
?>

Die 12. Codezeile ist der „Schönheits“-Code dieses Artikels. Die rechte Seite des Gleichheitszeichens ist ein Objekt und die linke Seite ist eine Variable, also kommt hier das Scharfe Frage: Kopiert $m das Objekt? Oder als Referenz weitergeben? Die Speicherbeziehung dieses Codes ist wie folgt:

Detaillierte Erläuterung der Objektwertübertragungsmethode in PHP

Die Attributwerte der letzten beiden Objekte werden also in „Heiraten!!!“ geändert.

Wie ist die 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;
 ?>

Detaillierte Erläuterung der Objektwertübertragungsmethode in PHP

Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Objektwertübertragungsmethode in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn