如何将值传递给匿名函数?

How to pass a value to an anonymous function?

下面的方法无效。

$dir = '/web/source/htm/arc.php'

// no routing
$app->get('/', function() {
    return ob(__DIR__ . $dir);
});

在JavaScript中,函数可以访问$dir(当然在JS语法中),但在PHP中它似乎不起作用。

我也试过了

// no routing
$app->get('/', function($dir) {
    return ob(__DIR__ . $dir);
});

在 PHP 中,函数外部的变量在内部不可访问(superglobal 变量除外)。

为了访问函数范围之外的变量,您必须告诉函数它应该可以访问它。这是使用 use 关键字完成的:

$dir = '/web/source/htm/arc.php'

// no routing
$app->get('/', function() use ($dir) {
    return ob(__DIR__ . $dir);
});

匿名函数在 PHP 中也称为闭包。这类似于 JavaScript 闭包,只是封闭的变量不是自动创建的。

这通过不隐式导入不需要的变量来节省内存。

您必须使用 use 关键字显式导入这些变量。

$app->get('/', function() use ($dir) {
    return ob(__DIR__ . $dir);
});

看这里:

http://php.net/manual/en/functions.anonymous.php