Re: [RFC] Immutable variables and objects

From: Date: Sun, 01 Feb 2015 19:16:45 +0000
Subject: Re: [RFC] Immutable variables and objects
References: 1 2 3 4  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
On 01/02/2015 01:01, Andrea Faulds wrote:
Given that PHP is dynamic, not compiled, and function calls can have side effects, though, this would be difficult to enforce. You’d need to check that all calls made within the function do not have any side effects on that value… I’m not sure how workable this is.
If you can implement copy-on-write, you can implement immutability, and vice versa. However, any context where its possible to mix mutable and immutable (or mutable-reference and copy-on-write) would get confusing very quickly, I think. Consider some possible behaviours of this set of objects: $a->b = $b; $a2 = $a; $a2->b->value = 42; If every object is immutable or copy-on-write, this is easy to reason about: $b and $a->b remain the same, while $a2->b is created as a new clone; in doing so, $a is separated from $a2 to reference this new copy. But what if $a/$a2 are immutable, or copy-on-write, but $b is not - do $b, $a->b and $a2->b all reflect the change, with no error? That would certainly make no sense for const parameters, and would be a massive gotcha for "value objects" defined as such at the class (rather than instance) level. Regards, -- Rowan Collins [IMSoP]

Thread (23 messages)

« previous php.internals (#81540) next »