Statik olarak işlevlerini çağırırken __call
sihirli yöntemi kullanmak mümkün mü?
Henüz, ben biliyordum geçen boru hattı önerilen (artık) __callStatic
Docs yöntem yoktur. Aksi __call
ve diğer __
sihirli yöntemler bir nesne örneği şey ama kullanımı için mevcut değildir.
Sen other sihirli yöntemini kullanmak zorunda, __callStatic
a> - Bu aslında henüz piyasaya sürülmedi PHP> = 5.3, yalnızca kullanılabilir.
Daha önce tarif edildiği gibi, herhangi bir sihirli statik arayan yoktur. Ama böyle kod olabilir:
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"));