讨论数量:
Auth facade 对应的依赖注入容器的键是 ‘auth’。
看一下 AuthServiceProvider 注册的内容, 知道 ‘auth’ 键对应的是 AuthManager;
$this->app->singleton('auth', function ($app) {
$app['auth.loaded'] = true;
return new AuthManager($app);
});
Auth::guest() 即调用AuthManager 的 __call 魔术方法
public function __call($method, $parameters)
{
return $this->guard()->{$method}(...$parameters);
}
实际上 guest() 对应的是 guard 的 guest方法。
guard 即是 config.auth 里面 driver 对应的guard 。
session driver 对应 Illuminate\Auth\SessionGuard
token driver 对应 Illuminate\Auth\TokenGuard
里面都没有 guest 方法, 使用了 Illuminate\Auth\GuardHelpers trait ,这个方法正是定义在这里面。
public function guest()
{
return ! $this->check();
}
推荐文章: