В примере: echo foo($object, "func"); должен вернуть - MyClass::func, а возвращает MyClass::__invoke.
Спасибо.
class MyClass{
function func(){
return __METHOD__;
}
static function staticMethod(){
return __METHOD__;
}
function __invoke(){
return __METHOD__;
}
}
$object = new MyClass();
function foo(callable $x){
return $x();
}
echo foo($object, "func"); // MyClass::func (возвращает MyClass::__invoke)
echo foo(["MyClass", "staticMethod"]); // MyClass::staticMethod
echo foo($object); // MyClass::__invoke