Re: __invoke() weirdness
| From: | Lars Strojny | Date: | Thu, 25 Dec 2008 05:11:23 +0000 |
| Subject: | Re: __invoke() weirdness | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-42372@lists.php.net to get a copy of this message | ||
Hi David,
Am Dienstag, den 23.12.2008, 17:02 +0100 schrieb David Zülke:
[...]
> 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();
This is the same as the following:
$obj = new stdClass();
$obj->method = function() {
return "foo";
};
$obj->method();
The first "method" is a property, the call to "method" is - well - a
method call. Because PHP separates methods and properties in the class
entry structure - and because we have magic methods like __set, __get
and __call, there is no efficient and logical way how to search for
properties with closure instances when a method is not found. We
discussed that before and decided to let closures go out into the wild
and think about adding a solution for prototype alike inheritance later.
cu, Lars
--
Jabber: lars@strojny.net
Weblog: http://usrportage.de
Attachment: [application/pgp-signature] Dies ist ein digital signierter Nachrichtenteil signature.asc
Attachment: [application/pgp-signature] Dies ist ein digital signierter Nachrichtenteil signature.asc