我注意到我可以使用 Closure
或 Callable
作为类型提示,如果我们希望运行一些回调函数的话。例如:
function callFunc1(Closure $closure) {
$closure();
}
function callFunc2(Callable $callback) {
$callback();
}
$function = function() {
echo 'Hello, World!';
};
callFunc1($function); // Hello, World!
callFunc2($function); // Hello, World!
问题
这里有什么区别?换句话说,什么时候使用 Closure
什么时候使用 Callable
还是 它们的目的相同?
原文由 Dev01 发布,翻译遵循 CC BY-SA 4.0 许可协议
区别在于,a
Closure
必须是匿名函数,其中callable
也可以是普通函数。您可以使用下面的示例查看/测试它,您将看到第一个错误:
因此,如果您只想键入提示匿名函数,请使用:
Closure
如果您还想允许普通函数使用callable
作为类型提示。