is_callable и семейство функций call_user_func correctly нормально работают с замыканиями Closure (PHP 5.3) точно так же как с анонимными функциями. Простые тесты:
<?php
function is_callable_test(Closure $func=null){
if (is_callable($func)){
$func();
}else{
echo 'uncaleble', "\n";
}
}
function call_user_func_test($func=null){
if (is_callable($func)){
call_user_func($func, ' second test');
}else{
echo 'uncaleble', "\n";
}
}
$win_text = 'is_callable function work correctly!';
is_callable_test(function () use ($win_text){
echo $win_text, "\n";
});
$win_text = 'call_user_func work correctly!';
call_user_func_test(function ($num) use ($win_text){
echo $win_text,' ', $num, "\n";
});
?>