Hey Casper.

On 08.08.22 09:54, Casper Langemeijer wrote:
Hi all,

In the discussion I sometimes see the terminology 'readonly' and 'writable' 
being used. This is confusing because when the property is an object that 
itself is mutable, there is nothing read-only about it.

The terminology in the RFC seems right to me, and overall it seems solid.

However, I'm not convinced this RFC is solving a real issue. I could not find 
any reasoning in the RFC, except that Swift has a very similar language feature.


To me it solves the topic of making a property readable but not writeable from the public while still allowing it to be written to within the private or protected context.

So enforcing usage of a public setter-metbhod but not having to use a getter.

Soemthing like this

final class Foo
{
    public private(set) string $username;

    public function changeUsernameTo(string $newUsername): self
    {
        if (! newUsernameIsUnique($newUsername) {
            throw new RuntimeException('The username is not unique');
        }
        $this->username = $newUsername;

        return $this;
    }
}


readonly only solves that for immutable properties but there currently is no way of solving that for mutable properties.

Just my 0.02€

Cheers

Andreas

--
                                                              ,,,
                                                             (o o)
+---------------------------------------------------------ooO-(_)-Ooo-+
| Andreas Heigl                                                       |
| mailto:andr...@heigl.org                  N 50°22'59.5" E 08°23'58" |
| https://andreas.heigl.org                                           |
+---------------------------------------------------------------------+
| https://hei.gl/appointmentwithandreas                               |
+---------------------------------------------------------------------+

Attachment: OpenPGP_0xA8D5437ECE724FE5.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to