Re: __call_static() Magic Method
| From: | Sebastian Deutsch | Date: | Thu, 26 Jul 2007 15:23:08 +0000 |
| Subject: | Re: __call_static() Magic Method | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-31281@lists.php.net to get a copy of this message | ||
Hello,
where can i find the latest version of your patch?
Etienne Kneuss provided me a patch to track from where my class method
is called statically.
<?
class foo {
function doit() {
echo get_called_class();
}
}
foo::doit(); // with etiennes patch it will echo foo
?>
Will they work together?
cheers
*.sebastian deutsch
Sara Golemon schrieb:
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)...
-Sara