靜態調用函數時可以使用__call
魔術方法嗎?使用__call與靜態類?
7
A
回答
15
還不知道,現在有一個建議(現在可用)__callStatic
Docs方法在最後我知道。否則__call
和其他__
魔術方法不可用於任何對象的實例。
8
你必須使用其他神奇的方法,__callStatic
- 這是隻有在PHP> = 5.3,尚未實際發佈呢。
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"));
導入時需要注意的是不可用。 – David 2009-01-27 02:45:09