__call
静态调用函数时可以使用魔术方法吗?
nickf
问问题
7848 次
3 回答
15
还没有,据我所知,管道中有一个提议的(现在可用的)__callStatic
Docs方法。否则__call
,除了对象的实例之外,其他__
任何魔术方法都无法使用。
于 2009-01-27T02:43:44.673 回答
9
您必须使用另一种神奇的方法,__callStatic
- 这仅在 PHP >= 5.3 中可用,实际上尚未发布。
于 2009-01-27T02:43:37.280 回答
0
如前所述,没有神奇的静态调用者。但是你可以这样编码:
class First {
public static function test1(){
return 1;
}
public static function test2(){
return 2;
}
}
class Second {
public static function test1(){
if(func_num_args()>0){
return func_get_args();
}
return 21;
}
public static function test2(){
return 22;
}
}
class StaticFactory {
public static function factory($class, $method){
if(func_num_args()>2){
$args = func_get_args();
array_shift($args);
array_shift($args);
return call_user_func_array(array($class,$method), $args);
}else{
return call_user_func_array(array($class,$method), array());
}
}
}
print_r(StaticFactory::factory("Second", "test1", 1, false, true));
print_r(StaticFactory::factory("First", "test1"));
于 2009-03-28T23:44:54.543 回答