↑↓ 选择 · Enter 打开 · Esc 关闭
💡 技术前沿 博客园精华

PHP clone 之后,为什么改副本会影响原对象? - JaguarJack

博客园精华 · 2026-09-08 23:51 · 0 浏览
查看原文
AI 摘要

月下三贵
博客园
首页
新随笔
联系
订阅
管理
PHP clone 之后,为什么改副本会影响原对象?
PHP clone 之后,为什么改副本会影响原对象?
clone
会复制对象,却会共享嵌套对象。在每一层实现
__clone
可以解决这个问题,使用不可变值对象也可以。所有行为均已在 PHP 8.3 中验证。
下面这个错误报告改变了一个团队对 PHP 对象语义的理解。
某电商平台拥有一套订单处理服务。其中采用了一种标准模式:从数据库中获取订单,针对各种操作(计算总额、检查库存、应用折扣)克隆订单,从而使原始订单保持不变。
$workingOrder = clone $order;
是整个代码

关注公众号「网英的日常」, 第一时间获取行业资讯推送!