Send a blank email to [email protected] to get a copy of this message
We have Traits. How about simply:
trait Accessors
{
public function __get($name) {
$fn = "get_$name";
return method_exists($this, $fn)
? $this->$fn()
: $this->_get($name);
}
public function __set($name, $value) {
$fn = "get_$name";
if (method_exists($this, $fn)) {
$this->$fn($value);
} else {
$this->_set($name, $value);
}
}
}
The trait falls back on _get() and _set() as your __get() and __set()
equivalent methods if you need both accessors and magic.
With a standard trait like this, people would be strongly encouraged to
standardize on accessor methods - and IDE support could be implemented
easily, since accessor-methods would then be standardized.
That said, I was sad to see accessors getting rejected - it is one of the
most widely implemented PHP features... I don't think there is one
framework that does not have some variety of accessors, and I have not
personally written a library or application in the past 5 or 6 years
without adding boilerplate practically identical to the above...
- Rasmus Schultz
---------- Forwarded message ----------
From: Galen Wright-Watson <[email protected]>
To: [email protected]
Cc: Brandon Wamboldt <[email protected]>, Nikita Popov <
[email protected]>, PHP internals <[email protected]>
Date: Mon, 3 Jun 2013 12:14:28 -0700
Subject: Re: [PHP-DEV] Random Monday thought.
On Mon, Jun 3, 2013 at 10:30 AM, Richard Quadling <[email protected]>wrote:> On 3 June 2013 18:22, Brandon Wamboldt <[email protected]> wrote:>> > I think the point was that if somebody wants to extend one another
class,
> > maybe one of the SPL classes for example, they can't also extend the
base
> > class with getter/setter support so it's an incomplete solution that
will
> > frustrate many users.> > [...]> >> Ah. DOH!>> Would having an interface that swapped the default property accessor logic> be any better?>
Or a trait ("Accessable", "Accessored", "Accessorable")? Is it
possible to
have a trait implemented internally? Though it seems that this would still
sometimes run afoul of mixing new accessor logic with old.