laravel路由中的调用函数序列?

时间:2017-09-04 02:49:15

标签: php laravel routes

以下示例:

Route::get('users/{id}', function ($id) {
    //code
})->where('id', '[0-9]+');

首先调用匿名函数或首先调用“where”函数?

在我看来,我认为首先会调用匿名函数。但我认为这是不合理的,我认为只有符合正则表达式的id才能调用匿名函数是合理的。

那究竟是什么序列?

1 个答案:

答案 0 :(得分:0)

where将首先运行。

为什么?

get函数返回object以及where。因此,如果Laravel调用 Route ,则会在触发Route的操作之前首先构建Route对象。

$obj = Route::get() // returns an object, meaning that object returned has a function `where`.

$obj->where() // still returns the same object but validated.

所以你在where电话后有一个对象。这就是Laravel将用于在该路线上执行操作的内容。

赞:performRoute($obj) // this is only for example

您可以在此处查看路线功能:https://github.com/laravel/framework/blob/bd352a0d2ca93775fce8ef02365b03fc4fb8cbb0/src/Illuminate/Routing/Route.php