Re: Patch: getters/setters syntax Implementation
| From: | Felipe Pena | Date: | Sun, 04 Dec 2011 15:05:21 +0000 |
| Subject: | Re: Patch: getters/setters syntax Implementation | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-56764@lists.php.net to get a copy of this message | ||
Hi,
2011/12/4 Clint M Priest <cpriest@zerocue.com>:
> Updated patch w/o white-space:
> http://www.clintpriest.com/patches/accessors_v1.patch
>
> In the end it is a relatively simple patch. The new syntax effectively creates internal
> functions on the object and the system looks for those functions and calls them at the appropriate
> time.
>
> Example:
> class z {
> public $Hours {
> public get { return $this->_Hours; }
> protected set { $this->_Hours = $value; }
> }
> }
>
> Defines:
> $o->__getHours();
> $o->__setHours($value);
>
> Standard __get()/__set() functionality checks for the more specifically defined function name
> and calls them. I thought this would make the most sense since it would allow us to leverage the
> existing inheritance functionality. This comes out with respect to interfaces and traits in that
> only errors had to be changed (for clarity) on interfaces and no changes to traits were necessary to
> support the new functionality.
>
> For the automatic get/set functionality, I essentially built the function body myself within
> zend_do_end_accessor_declaration(). One point of contention here is that internally it defines a
> __$Hours property which would be accessible from various points. I believe the standard C# get/set
> does not allow any access to the underlying data storage. In order to accomplish that there would
> need to be some non-standard storage or a super-private level or something. I did not explore that
> possibility as of yet.
>
> I did add a couple of convenience functions that may already be available in some other form I
> was not aware of, such as strcatalloc or MAKE_ZNODE()..
>
> --Clint
>
> -----Original Message-----
> From: Pierre Joye [mailto:pierre.php@gmail.com]
> Sent: Sunday, December 04, 2011 4:50 AM
> To: Clint M Priest
> Cc: internals@lists.php.net
> Subject: Re: [PHP-DEV] Patch: getters/setters syntax Implementation
>
> hi Clint!
>
>
> Thanks for your work so far!
>
> On Sun, Dec 4, 2011 at 1:33 AM, Clint M Priest <cpriest@zerocue.com> wrote:
>
>> What are the next steps to get this added to some future release?
>
> Let discuss the implementation and how it works, then you can move to the voting phase. There
> is no need to hurry as the next release where this patch could go in is next year.
>
> Cheers,
> --
> Pierre
>
> @pierrejoye | http://blog.thepimp.net |
> http://www.libgd.org
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
I've fixed the zend_compile.c and zend_object_handlers.c to build with
--enable-maintainer-zts. (some TSRMLS_CC missing and TSRMLS_DC usage
instead of TSRMLS_CC)
Other thing I have noticed that you have not followed our coding
standards about brackets and comments (we don't use the C++ style
one). And about the comments looks as the patch isn't finished or you
just forgot the remove them?
http://dpaste.com/665851/plain/
--
Regards,
Felipe Pena