Re: __call_static() Magic Method
| From: | Sara Golemon | Date: | Thu, 19 Jul 2007 06:43:44 +0000 |
| Subject: | Re: __call_static() Magic Method | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-31078@lists.php.net to get a copy of this message | ||
Sara Golemon wrote:
> Attached is a patch which exports an internals hook in zend_class_entry
> for fetching function pointers similar to the object hook get_method()
> available to instance methods.
>
> This patch also exports a userspace hook __call_static() which operates
> in the fashion of the current __call() magic method, but for static calls.
>
> Wez called for some functionality like this a few weeks ago for a COM
> wrapper (or something similar), and I noticed there was actually a
> comment in the engine about how this should eventually be done anyway...
>
> Usage example:
>
> class foo
> {
> public static function __call_static($fname, $args)
> {
> echo "foo::{$fname}() called staticly with ",
> count($args), " parameters\n";
> }
> }
>
> foo::randomMethod(1,2,3);
>
>
> I considered setting get_static_method to zend_std_get_static_method()
> by default (avoiding the if set check during runtime), but all the other
> hoooks follow this pattern so I went with consistency.
>
> If noone comments to the negative, I'll commit next friday (7/20)...
>
Updated patch applies, mostly fixing minor bugs in implementation
(include one fix for the __call method as well).
The more significant change from the previous patch it the userspace
name: __callStatic() rather than __call_static(). This is in keeping
with __toString() and the standard of using camel case rather than
underscore demarcation.
-Sara