Callable Closure的引入
在老版本的php中,回调函数的指定只能用字符串方式,并没有将回调函数的类型明确指出。而且只要这个字符串符合某种特定的格式要求,就能被接受,这就导致了一些问题,比如类型安全无法得到保证。
为了解决这个问题,php7.1引入了新的可调用类型Callable Closure,它主要被用于为parameter类型指定类型。
使用Callable Closure进行数据类型的指定
什么是Callable Closure
Callable Closure也被称为闭包,是php中一个可以存储外部环境变量的函数,而且该函数可以被存储和传递。它的语法很简单,可以通过使用function关键字来创建。函数内部可以直接使用外部的变量,这些变量可以在创建闭包时被捕获之后存储在闭包内部,称为闭包作用域。
下面是使用Callable Closure进行数据类型指定的示例:
function processRequest(callable $handler) {
// TODO: 增加处理逻辑
$data = getData();
echo $handler($data);
}
$handler = function($data) {
// TODO: 增加处理逻辑
$response = json_encode($data);
return $response;
};
processRequest($handler);
在上述示例中,可以看到Callable Closure用于指定processRequest方法中$handler参数的类型。
Callable Closure的优点
使用Callable Closure指定数据类型的优点很明显:
增加了类型安全性
提供了更多的代码提示和检测功能
可以避免一些传统的错误,比如误将参数传递给了一个回调,因为Callable Closure必须要与指定的类型完全匹配,否则会出现类型错误。
总结
Callable Closure在php7.1中引入,提供了一种可调用类型,用于为parameter类型指定类型,增加了类型安全性并提供了更多的代码提示和检测功能。