private function ensureInvokable($f) { if (method_exists($f, '__invoke')) { return $f; } else { return function () use($f) { return call_user_func_array($f, func_get_args()); }; } }