2017-03-20 21 views
1

laravel上的以下路線有什麼區別?laravel上的兩種路線有什麼區別?

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

我應該什麼時候應該使用哪一個?

謝謝。

+0

http://php.net/manual/en/language.namespaces.rules.php – apokryfos

回答

1

它們是完全不同的東西。

「PostsController」是字符串「PostsController」

Admin\PostsController::class是最有可能的字符串「應用程序\ HTTP \控制器\管理\ PostsController」

如果使用第二個它最終會尋找App\Http\Controllers\App\Http\Controllers\Admin\PostsController,因爲Laravel已經假定控制器的名稱空間爲App\Http\Controllers,這取決於您的RouteServiceProvider中設置的內容。

當您僅使用'PostsController'時,Laravel結束於App\Http\Controllers\PostsController

這是默認情況下的設置。 (假設你沒有組正在調整所使用的命名空間)

0

兩者之間的區別在於第一個要在與指定路由的文件相同的範圍內尋找Controller。第二個將在Admin命名空間中尋找名爲PostsController的控制器。

如果這些位置是相同的,那麼這兩條路線之間就沒有區別。

在回答問題的第二部分時,您選擇使用哪一個真的取決於您。我個人利用路由組來處理我的命名空間(等等),如下所示:

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