laravel路由中的奇怪行为

时间:2017-12-29 10:21:29

标签: php laravel laravel-5 routing

考虑以下两个laravel路由指令(我使用的是laravel版本5.0.35,但我在5.5版中发现了相同的行为):

    Route::get('/a/b', function(){return "One";});
     .
     .
     .
    Route::get('/a/b', function(){return "Two";});

我知道他们没有多大意义,但要考虑一下。 从理论上讲,优先考虑的是第一个优先于第二个。但是,如果您使用

访问该网站

http://whatever.com/a/b

回应是

  

两个

我想这是因为即使真正选择的指令是第一个,第二个 OVERWROTE 第一个带有他的返回值。

我的问题是:这是预期的行为吗?因为当你在路径文件中只有两行时可能很明显,但是当你有几十行时,你可能会很明显,并且你无意中可能会复制相同的指令,并认为第一个指令的返回值是要返回的指令。

1 个答案:

答案 0 :(得分:3)

这是预期的行为吗?

是。每当您创建具有相同名称的路由时,在项目加载时,它将替换路径文件(LIFO method)上的最后一个。当我们在项目中添加一些更改时,我们曾经运行composer dump-autoload; php artisan route:clear。使用所有这些命令,它会转储所有先前的路由并将新路由加载到应用程序内存。

当我做项目时,我遇到了同样的问题。在检查时我得到了重复的路线名称问题。一旦修好,所有运行顺利。

同样检查一下 - Multiple routes with same URL, but different names