在使用php编写gateway代理请求的时候,如果要改变请求,为什么要使用clone,但是clone只能对于属性进行clone,对象是潜拷贝啊。
我知道在psr7中定义的是HTTP 请求和响应必须要被视为无法修改的,但是因为由想到clone是对于对象的属性是深拷贝,但是对象中的对象是潜拷贝,有点想不通,求大神解惑。
在使用php编写gateway代理请求的时候,如果要改变请求,为什么要使用clone,但是clone只能对于属性进行clone,对象是潜拷贝啊。
我知道在psr7中定义的是HTTP 请求和响应必须要被视为无法修改的,但是因为由想到clone是对于对象的属性是深拷贝,但是对象中的对象是潜拷贝,有点想不通,求大神解惑。
2 回答1.5k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
2 回答908 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
2 回答973 阅读
1 回答945 阅读
1 回答870 阅读
PSR7里能修改的都给了对应的接口
withXXXX
,作为库的使用者是不需要clone的,例如guzzled的实现已经帮你clone了,需要更新的属性也给你更新了:你自己clone然后去直接改属性(正常都是private,你也改不了)是不能保证不可变的,但是你只用
withXXX
这些方法,就可以保证不可变。