【php】Laravel中的Auth::routes为什么是这样写?

Laravel-5.5里的自带的认证系统中, 路由 Auth::routes()为什么是这样调用的?

而不是Routes::Auth()?

文件1: routes\web.php

<?php

Auth::routes();

文件2: vendor\laravel\framework\src\Illuminate\Routing\Router.php

    /**

* Register the typical authentication routes for an application.

*

* @return void

*/

public function auth()

{

// Authentication Routes...

$this->get('login', 'Auth\[email protected]')->name('login');

$this->post('login', 'Auth\[email protected]');

$this->post('logout', 'Auth\[email protected]')->name('logout');

// Registration Routes...

$this->get('register', 'Auth\[email protected]')->name('register');

$this->post('register', 'Auth\[email protected]');

// Password Reset Routes...

$this->get('password/reset', 'Auth\[email protected]')->name('password.request');

$this->post('password/email', 'Auth\[email protected]')->name('password.email');

$this->get('password/reset/{token}', 'Auth\[email protected]')->name('password.reset');

$this->post('password/reset', 'Auth\[email protected]');

}

回答

先看源码,看看 Auth::routes( ) 其实是做了什么 ?

【php】Laravel中的Auth::routes为什么是这样写?

// 如果你不知道 $app->make('router') 的返回值,dd() 打印一下就会知道是 Router 实例

static::$app->make('router')->auth();

底层其实还是手动创建了一个Router实例,并调用了它的auth方法,你所说的 Routes::Auth()也是这样的。

所以,无论你使用 Routes::Auth() 或者 Auth::routes() 其实都是生成 Router 实例并调用了它的 auth方法,作者为什么建议使用 Auth::routes() ,稍微动脑就能想到,Auth::routes()这种写法更容易让人知道生成的路由是和认证权限有关的,和 Auth::id() , Auth::check 等对应,更规范整齐。

简单来说 文件 2 才是 Route 组件的核心 所以写成 $this 很正常
文件 1 的话 需要看下文档的详细解释:
https://d.laravel-china.org/d...

以上是 【php】Laravel中的Auth::routes为什么是这样写? 的全部内容, 来源链接: utcz.com/a/106881.html

回到顶部