Jadual Kandungan
对象的深拷贝有没有什么高效的做法?
Jun 06, 2016 pm 08:21 PM
php
在clone
对象的时候使用深拷贝
有没有什么通用且高效的方法?
现在我的做法是用反射类
去遍历,但只是一层的,这样做的话是不是对象内的对象依旧是引用的?
那么有没有人能提供一下多层深拷贝的做法呢?
<code>public function __clone() { $reflectClass = new \ReflectionClass(__CLASS__); foreach ($reflectClass->getProperties() as $properity) { $name = $properity-> name; if (\is_object($this->$name)) $this->$name = clone $this->$name; } } </code>
Salin selepas log masuk
Salin selepas log masuk
回复内容:
在clone
对象的时候使用深拷贝
有没有什么通用且高效的方法?
现在我的做法是用反射类
去遍历,但只是一层的,这样做的话是不是对象内的对象依旧是引用的?
那么有没有人能提供一下多层深拷贝的做法呢?
<code>public function __clone() { $reflectClass = new \ReflectionClass(__CLASS__); foreach ($reflectClass->getProperties() as $properity) { $name = $properity-> name; if (\is_object($this->$name)) $this->$name = clone $this->$name; } } </code>
Salin selepas log masuk
Salin selepas log masuk
不需要用到的反射的呀,单个对象只需要关心自己的属性里又哪些是需要深拷贝的,直接调用 clone 拷贝即可,至于那个对象又是如何处理他的深拷贝的,应该交给他自己去处理。
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Artikel Panas
R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
3 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Berapa lama masa yang diperlukan untuk mengalahkan fiksyen berpecah?
3 minggu yang lalu
By DDD

Alat panas Tag

Artikel Panas
R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
3 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Berapa lama masa yang diperlukan untuk mengalahkan fiksyen berpecah?
3 minggu yang lalu
By DDD

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP
