什么是PHP7类型的闭包?

Wil*_*ken 2 php signature php-7 php-7.2

这是代码,它是一个简单的容器.

class Application
{
  private $recipes;
  private $instances;

  public function configureCache(XXXXXXXX $closure) {
    $recipes['cache'] = $closure;
  }

  public function getCache(): Cache {
    if (empty($instances['cache'])) {
      $instances['cache'] = $recipes['cache']();
    }
    return $instances['cache'];
  }
}
Run Code Online (Sandbox Code Playgroud)

此代码在PHP 7.1+上运行.我可以为XXXXXXXX填写哪些内容以使其最具体?类型是一个函数,更具体地说是一个返回Cache的函数.

bis*_*hop 7

PHP支持可调用实体的几种语法:包含函数名称的字符串,对象和方法的数组,静态方法的类和方法数组,第一类闭包和生成的闭包.

所有这些的类型提示是callable.

如果你只想要匿名函数,即第一类闭包,请使用Closure.但这会限制你可以接受的可赎回种类.

截至目前,PHP不支持关于正式可调参数的参数提示或返回类型提示:例如,您的代码不能说只接受带有一个字符串参数并返回布尔值的闭包.