关于 Facades 里 @method 的地方,有点不明白的地方
laravel和很多第三方包,类库里都有类似Facade的类顶部都有漂亮的@method标签,不知道这是怎么生成的。PHPStorm提示能点击,但是点了暂时没能到达指定方法。
/**
* @method static mixed guard(string|null $name = null)
* @method static void shouldUse(string $name);
* @method static bool check()
* @method static bool guest()
* @method static \Illuminate\Contracts\Auth\Authenticatable|null user()
* @method static int|null id()
* @method static bool validate(array $credentials = [])
* @method static void setUser(\Illuminate\Contracts\Auth\Authenticatable $user)
* @method static bool attempt(array $credentials = [], bool $remember = false)
* @method static bool once(array $credentials = [])
* @method static void login(\Illuminate\Contracts\Auth\Authenticatable $user, bool $remember = false)
* @method static \Illuminate\Contracts\Auth\Authenticatable loginUsingId(mixed $id, bool $remember = false)
* @method static bool onceUsingId(mixed $id)
* @method static bool viaRemember()
* @method static void logout()
*
* @see \Illuminate\Auth\AuthManager
* @see \Illuminate\Contracts\Auth\Factory
* @see \Illuminate\Contracts\Auth\Guard
* @see \Illuminate\Contracts\Auth\StatefulGuard
*/
class Auth extends Facade
{
这里的注释只是起到一个 IDE 代码提示的作用,对本身功能没有任何影响。
至于怎么找真正定义的地方,参考以下流程:
Auth::xxx
等价于app('auth')->xxx
,所以需要找到定义auth
的地方;Illuminate\Auth\AuthServiceProvider
,扫一眼代码可以看到 https://github.com/laravel/framework/blob/...AuthManager
对象,你要找的方法定义都在里面。