![]() |
1
1
对象总是通过引用传递。使它们作为副本传递的唯一方法是显式使用
我的建议是使用一个数组,它是值类型,因此总是被复制。因为您可以将它用作关联数组(例如字符串->值),所以它也可能是一个对象。缺点是,当然,您不能使用方法(但这就像一个结构,所以您可能对此很满意)。然而,没有办法强制类型安全。 但是,老实说,有了所有的需求,似乎PHP不是你的语言。 |
![]() |
2
1
我认为最简单的方法是像Java那样执行它——让你的值类是不可变的,让所有的“修改”方法返回一个新的对象。 |
![]() |
3
1
我认为只有用PHP代码才能实现这个目标。 您无法控制PHP函数如何处理参数,我看不到如何确保按您所希望的方式处理所有内容,而无需更改PHP二进制文件和模块中的(较低级别)代码。 不过,那会很酷的:) |
![]() |
4
1
我在玩弄匿名者的建议,让对象的任何变化都返回一个新对象,这是可行的,但很尴尬。
现在测试一下:
它起作用,但你必须用一种奇怪的方式来改变物体:
我唯一能想到的另一种方法是
最后,可能更容易使变量私有化并且不提供变元,因此更改变量的“枚举”值的唯一方法是创建一个新的变元:
|