Re: [RFC] Readonly Properties
| From: | Andrea Faulds | Date: | Tue, 28 Oct 2014 15:08:11 +0000 |
| Subject: | Re: [RFC] Readonly Properties | ||
| References: | 1 2 3 4 5 6 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-78431@lists.php.net to get a copy of this message | ||
> On 28 Oct 2014, at 14:24, Rowan Collins <rowan.collins@gmail.com> wrote:
>
> Andrea Faulds wrote on 28/10/2014 14:08:
>>> >On 28 Oct 2014, at 07:17, Jordi Boggiano<j.boggiano@seld.be> wrote:
>>> >
>>> >I like it, except for the fact that if you add a custom getter to a property
>>> >suddenly it becomes readonly unless you remember to add "; set" to the end of the block,
>>> >right?
>> Well, no. If you choose to specify getters and setters, and only specify a setter, of
>> course it is read-only. It doesn’t make sense to have a getter and no setter and yet expect a
>> property to be writeable.
>>
>
> I think the problem is that the get and set annotations are serving multiple purposes - to
> change the visibility, to define custom accessor/mutator code, but also to declare whether certain
> actions are possible at all. Since the default is for the property to be readable and writable, the
> fact that adding "{ get; }" makes it readonly isn't immediately intuitive, although
> it does makes sense once you think about it.
Hmm. Perhaps we need this, then:
public $foobar; // public read, private write
public/private $foobar; // public read, private write
public readonly $foobar; // public read, not writeable at all
This then confined set/get entirely to implementation details. A read-only property would be denoted
by readonly.
With the last one, you can only have get, for the first two, you must have both get and set.
Does that work? Seems pretty good to me.
--
Andrea Faulds
http://ajf.me/