Где в приведенном примере ошибка и как её пофиксить?
class MyClass{
function func(){
return __METHOD__;
}
static function staticFunc(){
return __METHOD__;
}
function __invoke(){
return __METHOD__;
}
}
$obj = new MyClass();
// Ожидается то, что можно вызвать (callable)
function foo(callable $x){
if(func_num_args() == 2){
$m = func_get_arg(1);
return $x -> $m();
} elseif(is_array($x)){ /*var_dump($m);*/
return $x[0]::$m[1](); // err
} else{
return $x();
}
}
echo foo($obj, "func"); // MyClass::func
echo foo(["MyClass", "staticFunc"]); // MyClass::staticFunc
echo foo($obj); // MyClass::__invoke