如何创建一个函数,指定返回类型和外部变量为use
?
以下示例是错误的还是不支持(还)?
<?php
$arr = ['test' => 'value'];
function test1() use ($arr) : string { // Line 5
return $arr['test'];
}
function test2() : string use ($arr) {
return $arr['test'];
}
错误是:
解析错误:语法错误,意外“使用”(T_USE),期望第5行的[PATH] \ index.php中的“{”
答案 0 :(得分:1)
正如评论中Adam Cameron所回答的那样,问题是use
语言构造仅适用于closures,而不适用于所有功能。因此,在正常函数上使用它是没有意义的,因此解析器不能理解它。
当示例代码中的函数成为闭包时,一切都会有效。
$arr = ['test' => 'value'];
$fn = function() use ($arr) : string {
return $arr['test'];
};
echo($fn()); // outputs 'value'
请注意,您的首次尝试是正确的:首先是use
语句,然后是return type declaration。试图反转这两个将导致解析错误。