Hi Markus, have you measured the performance impact in a class with - say - ten methods? And what to do with __get() and __call()? How are the prioritized in the method resolve order?
cu, Lars
Am Mittwoch, den 31.12.2008, 17:38 +0100 schrieb Marcus Boerger:
> Hello David,
>
> Tuesday, December 23, 2008, 5:02:43 PM, you wrote:
>
> > Hi folks,
>
> > I played with __invoke today:
>
> > class Curry
> > {
> > protected $callable;
> > protected $args;
>
> > public static function create($callable)
> > {
> > $curry = new self($callable, array_slice(func_get_args(), 1));
> > return $curry;
> > }
>
> > protected function __construct($callable, $args)
> > {
> > $this->callable = $callable;
> > $this->args = $args;
> > }
>
> > public function __invoke()
> > {
> > return call_user_func_array($this->callable, array_merge($this-
> >>args, func_get_args()));
> > }
> > }
>
> > However, it doesn't work consistently.
>
> > This works fine:
> > $d = new DateTime();
> > $getAtom = Curry::create(array($d, 'format'), DATE_ATOM);
> > echo $getAtom();
>
> > This gives a fatal "Call to undefined method DateTime::getAtom()"
> > $d = new DateTime();
> > $d->getAtom = Curry::create(array($d, 'format'), DATE_ATOM);
> > echo $d->getAtom();
>
> > Is that intentional?
>
> So far it is. Yet I as much as you do not like the inconsistency. So I
> spend a little bit on providing the following patch that should do what
> you were looking for.
>
> The disadvantage: Calling properties is case sensitive while calling
> methods isn't. But since this has nothign to do with this patch and the
> patch only increases consistency I am all for applying it.
>
> Comments? Lukas/Johannes?
>
> Oh I hate that case insensitivity.... and inconsistency....
>
> > Cheers,
>
> > David
>
>
>
>
>
> Best regards,
> Marcus
> -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe,
> visit: http://www.php.net/unsub.php
--
Jabber: [email protected]
Weblog: http://usrportage.de
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
