Php 为什么可调用函数在此实例中输出闭包对象?

Php 为什么可调用函数在此实例中输出闭包对象?,php,function,oop,closures,callable,Php,Function,Oop,Closures,Callable,我理解它的方式是,callable只是一个类型提示,我们通过函数/方法参数传递它,以强制在它应该是类型callable之后传递的任何内容(换言之,是函数)参见此示例: function foo(\Callable $fn){ var_dump($fn); } 所以我假设$fn应该是一个函数,所以我将它作为一个函数传递 $fn = function(){ }; foo($fn); 我得到了输出 object(Closure)#1 (0) { } 这就是我不明白的,对象和闭包从

我理解它的方式是,
callable
只是一个类型提示,我们通过函数/方法参数传递它,以强制在它应该是类型
callable
之后传递的任何内容(换言之,是函数)参见此示例:

function foo(\Callable $fn){
     var_dump($fn); 
}
所以我假设
$fn
应该是一个函数,所以我将它作为一个函数传递

$fn = function(){

};

foo($fn);
我得到了输出

object(Closure)#1 (0) {
}

这就是我不明白的,对象和闭包从哪里来

匿名函数在PHP中作为闭包类型的对象进行维护,这就是它的工作方式。除此之外,我不确定问题是什么。如果您还没有阅读过,请阅读。我想我是在试图理解
可调用
与closure和anonymouse函数之间的关系,它们非常清楚地说明了什么是可调用的,什么是不可调用的。特别请参见示例2,名为“使用闭包的回调示例”。