Hi,
why not creating a more function like syntax for this feature. In my
opinion it looks more cleaner particularly when using more than one line
in a setter or getter. The other thing is that you can use type hints
with this syntax.
As example:
class Foo {
private $bar;
public set bar(Bar $bar) {
$this->bar = $bar;
}
public get bar() {
return $this->bar;
}
}
Christian
On 04.12.2011 15:09, Clint M Priest wrote:
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....@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<cpri...@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