具有返回类型和“使用”关键字

时间:2016-05-02 03:47:21

标签: php-7

如何创建一个函数,指定返回类型外部变量为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中的“{”

你可以run the code here

1 个答案:

答案 0 :(得分:1)

正如评论中Adam Cameron所回答的那样,问题是use语言构造仅适用于closures,而不适用于所有功能。因此,在正常函数上使用它是没有意义的,因此解析器不能理解它。

当示例代码中的函数成为闭包时,一切都会有效。

$arr = ['test' => 'value'];

$fn = function() use ($arr) : string {
    return $arr['test'];
};

echo($fn()); // outputs 'value'

你可以run the code here

请注意,您的首次尝试是正确的:首先是use语句,然后是return type declaration。试图反转这两个将导致解析错误。