RE: [PHP-DEV] Re: internals Digest 4 Feb 2012 09:08:29 -0000 Issue 2549
| From: | Clint M Priest | Date: | Sat, 04 Feb 2012 18:13:23 +0000 |
| Subject: | RE: [PHP-DEV] Re: internals Digest 4 Feb 2012 09:08:29 -0000 Issue 2549 | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-57710@lists.php.net to get a copy of this message | ||
-----Original Message-----
From: Rasmus Schultz [mailto:rasmus@mindplay.dk]
Sent: Saturday, February 04, 2012 10:01 AM
To: internals@lists.php.net
Subject: [PHP-DEV] Re: internals Digest 4 Feb 2012 09:08:29 -0000 Issue 2549
> Why can't the read-only and write-only keywords be implicit instead of explicit? I've
> never seen another language where you have to explicitly indicate what you're doing. At >
> best, it acts an extra fail-safe to prevent making errors - at worst, it just means more redundant
> code to maintain, more ways to make errors. Do the benefits really outweigh > the value of this?
The read-only and write-only keywords act a little differently. Without them, attempting a set on
an accessor without a setter defined will cause __set() to be called whereas with the read-only it
will produce an error. The inverse is true for write-only. I attempted to keep the ability to
have lazy initializing of properties via accessors, but that could be written in php slightly
differently if the read-only/write-only keywords were not present (due to guards). Doesn't
particularly matter to me.
> Regarding automatic implementations - according to the wiki, the backing field is implemented
> as public. Is that correct? Most other languages don't even expose the
> existence of the backing field. Would it not be more correct to implement an auto-backing field
> as protected? The reason for implementing accessors in the first place, is
> usually to prevent direct access to an underlying field.
Makes sense, in C# these backing fields are completely inaccessible directly, would that be even
better in this case or would protected suffice?
> Since a high degree of explicitness seems to be a design goal, it would probably make more
> sense if you had to use reflection to access a backing-field without invoking the
> accessor-methods.
> Looks nice otherwise! :-)
> - Rasmus
2012/2/4 <internals-digest-help@lists.php.net>
> From: Clint M Priest <cpriest@zerocue.com>
> To: "internals@lists.php.net" <internals@lists.php.net>
> Cc:
> Date: Fri, 3 Feb 2012 13:47:53 +0000
> Subject: [PATCH] Property Getters/Setters (v2.4) for review The
> property accessor functionality is done and is detailed here:
> https://wiki.php.net/rfc/propertygetsetsyntax-as-implemented
>
> Core Patch:
> http://www.clintpriest.com/patches/php-core/accessors/2.4.diff
>
> The core patch encompasses the entire original RFC and the
> as-implemented includes implementation details and edge cases not
> defined by the original RFC.
>
> Most changes are in zend_compile, zend_object_handlers and
> zend_language_scanner.
>
> Thanks,
>
> -Clint