group(['middleware' => 'aut-6ren">
gpt4 book ai didi

php - Lumen 文档中的 "function () use ($app) {"行意味着什么(可能在 Laravel 中有效)

转载 作者:行者123 更新时间:2023-12-02 03:31:23 25 4
gpt4 key购买 nike

我在 Lumen 文档 here 中一遍又一遍地看到 function () use ($app) { 语法.

完整的语法如下所示:

$app->group(['middleware' => 'auth'], function () use ($app) {
$app->get('/', function () {
// Uses Auth Middleware
});
});

这东西和PHP有什么关系吗?流明? Laravel 中也可用吗?

它看起来像 PHP 中没有大括号的匿名函数,但是,use 关键字在此特定代码示例的上下文中没有意义。据我所知,使用 use 可能就像 OOP 上下文中的别名或特征。

尝试稍微改变一下,因为我不是 function () 的忠实粉丝:D 我尝试使用 function () { use ($app) { 导致语法错误。

我以前没有在 PHP 中见过类似的东西,你能给我一些关于它的细节吗?

最佳答案

当处于closure时函数(任何在定义它的环境中关闭的函数)您需要使用外部变量,您可以使用 use ($foo, $var, ...) 使它们可用函数内部。

例如,下一个闭包函数将抛出异常:

    $name = 'Mark';

\DB::table('users')
->where(function ($query) {
$query->where('email', 'some_email')
->orWhere('name', $name) // <- $username doesn't exist here
});

因为 $name 未在 closure 函数内定义。

这就是 use 派上用场的时候:

    $name = 'Mark';

\DB::table('users')
->where(function ($query) use ($name){
$query->where('email', 'some_email')
->orWhere('name', $name) // <- now it's available
});

回到你原来的问题,这并不是 Lumen 独有的,我刚刚检查过,它也存在于 Laravel 应用程序中(同一个家族,所以并不奇怪)。我认为 $app 代表 Lumen/Laravel 的服务容器(阅读此内容以获取更多信息: Understanding the Laravel Service Container ),在这种情况下需要注册路由并使它们在任何地方都可用(在应用程序内部) )。

关于php - Lumen 文档中的 "function () use ($app) {"行意味着什么(可能在 Laravel 中有效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51736063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com