laravel上两种类型的路线有什么区别?

时间:2017-03-20 16:56:17

标签: php laravel laravel-5

laravel上的以下路线有什么区别?

Route::resource('posts', 'Admin\PostsController');
Route::resource('posts', Admin\PostsController::class);

我应该何时使用,应该使用哪一个?

感谢。

2 个答案:

答案 0 :(得分:1)

它们完全不同。

' PostsController'是字符串' PostsController'

Admin\PostsController::class很可能是字符串' App \ Http \ Controllers \ Admin \ PostsController'

如果您使用第二个,它将最终查找App\Http\Controllers\App\Http\Controllers\Admin\PostsController,因为Laravel已根据App\Http\Controllers中设置的内容假设控制器的命名空间为RouteServiceProvider

当你只使用' PostsController' Laravel以App\Http\Controllers\PostsController结束。

这是默认情况下的设置方式。 (假设您没有调整所用命名空间的组)

答案 1 :(得分:0)

两者之间的区别在于,第一个是在与您指定路径的文件相同的范围内查找Controller。第二个将在PostsController命名空间中查找名为Admin的控制器。

如果这些位置是同一个,两条路线之间没有区别。

在回答问题的第二部分时,您选择使用哪一部分取决于您。我个人使用路由组来处理我的命名空间(等等):

Route::group([
    'namespace'  => 'Admin',
], function () {
    Route::resource('posts', 'PostsController');
}