Heim > Backend-Entwicklung > PHP-Problem > So kopieren Sie PHP-Objekte flach

So kopieren Sie PHP-Objekte flach

醉折花枝作酒筹
Freigeben: 2023-03-10 20:00:01
nach vorne
1614 Leute haben es durchsucht

Beim Zuweisen ist die Referenzzuweisung gleichbedeutend mit der Übernahme eines Alias; die Änderung eines Alias ​​wirkt sich auf den anderen aus. Beim Zuweisen von Werten in PHP werden gewöhnliche Objekte tief kopiert, Objekte jedoch flach. Mit anderen Worten handelt es sich bei der Zuweisung eines Objekts um eine Referenzzuweisung. Im Folgenden finden Sie eine Einführung in das flache Kopieren von PHP-Objekten. Sie können bei Bedarf darauf zurückgreifen.

So kopieren Sie PHP-Objekte flach

Ich bin letzte Woche auf einen Low-Level-Bug gestoßen. Als ich heute hockte, wusste ich nicht, warum mir dieser Bug in den Sinn kam ob es dadurch verursacht wurde, dass das Objekt nicht geklont wurde.

Natürlich besteht das Problem darin, dass beim mehrmaligen Durchlaufen derselben Laravel-Sammlung die Eigenschaften desselben Objekts wiederholt bearbeitet werden, was dazu führt, dass nachfolgende Vorgänge die vorherigen Vorgänge überschreiben. Wenn also das Endergebnis zurückgegeben wird, wird nur das letzte zurückgegeben beibehaltene Operationsergebnisse.

Flache Kopie

$copy_of_object = clone $object;
Nach dem Login kopieren

Lass uns einen Test machen

<?php
class City {
    public $name;
}
$c1 = new City;
$c1->name = "烟台";
echo $c1->name;    // 烟台
echo PHP_EOL;
$c2 = $c1;
echo $c2->name;   // 烟台
echo PHP_EOL;
$c1->name = "威海";
echo $c2->name;   // 威海
echo PHP_EOL;
$c3 = clone $c1;
echo $c3->name;  // 威海
echo PHP_EOL;
$c1->name = "青岛";
echo $c3->name;  // 威海
echo PHP_EOL;
Nach dem Login kopieren

Testergebnisse

php /tmp/test.php
烟台
烟台
威海
威海
威海
Nach dem Login kopieren

Warum heißt es flache Kopie?

Das Gegenstück ist Deep Copy. Denn im Fall einer flachen Kopie verweisen die Attribute immer noch auf dasselbe Objekt, wenn die Attribute des Objekts immer noch Objekte sind.

Empfohlenes Lernen: php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo kopieren Sie PHP-Objekte flach. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:sunzhongwei.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage