看PHP 设计模式 原型模式(Prototype)时,衍生出一个扩展问题之 原型拷贝的浅拷贝和深拷贝问题(不管写Java还是写PHP还是写JS时都多多少少遇到过对象拷贝问题)
比如写前端页面时,我有一个form表单的数据对象,假如这个对象既拿来做表单数据的展示,又会在保存时发送给后端,有一个时间字段created_time,后台需要接收时间戳格式,而表单样式中需要展示’2018-08-08 08:08:08’这样的字符串格式,如果直接需改为后端需要的格式,那修改过后,表单中展示的数据格式也会跟着改变,这时只需要将form表单数据对象拷贝一份出来,修改拷贝后的created_time字段,然后将拷贝后的数据对象发给后端
// 浅拷贝 与 深拷贝(PHP)
浅拷贝,如果对象中包含有对象,相当于赋值(=)操作,而对象的赋值操作只是他们都保存着同一个标识符的拷贝,这个标识符指向同一个对象的真正内容。
PHP 手册 > 语言参考 > 类与对象: http://php.net/manual/zh/language.oop5.references.php ;里面描述的比较清楚 类与对象的内容
深拷贝,可以在__clone()魔术函数中显示的clone() 对象, 这个时候就相当于复制了一份内容放在了另外一块内存空间