69662


PHP 自体はわかるんですが laravel に触れたことがなく  
担当者が夏休みで急遽作業しなければならなくなったんですが  
routing が読めずにどのファイルに処理が書かれているかわからず困っています

route/api.php というファイルに

[code]

    Route::middleware('auth:api')->get('/user', function (Request $request) {
        return $request->user();
    });
    
[/code]

というのが書かれていてこれが GET /api/user を叩いたときの処理だと思うのですが（ここも自信ありません）

[code]

    $request->user();
    
[/code]

というのが次にどのファイルに飛んでいるかがわかりません

<https://readouble.com/laravel/5.7/ja/routing.html>  
このドキュメントも読んでみたのですが $request を使った書き方が

[code]

     /**
     * 送信されたリクエストの処理
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($request->route()->named('profile')) {
            //
        }
    
        return $next($request);
    }
    
[/code]

しか書かれていなくて route() というメソッドも読んでいないです

そもそも Request というのはプリミティブクラスじゃないんでしょうか  
そこにおそらくユーザ定義？の user() というメソッドが定義されてる？のが訳がわからないです…


CC BY-SA 4.0
2020-08-18T09:54:58.810
69658
2020-08-18T13:33:58.543
question
laravel
laravel の $request->user() という routeing の処理はどこに書かれていますか


私はLaravelは一度も使ったことがないですが、

[Authentication - Laravel - The PHP Framework For Web
Artisans](https://laravel.com/docs/7.x/authentication) に

[code]

    public function update(Request $request)
    {
        // $request->user() returns an instance of the authenticated user...
    }
    
[/code]

とあります。

解説には

> Alternatively, once a user is authenticated, you may access the
> authenticated user via an Illuminate\Http\Request instance. Remember, type-
> hinted classes will automatically be injected into your controller methods:

とあるので、処理は

`Illuminate\Http\Request` の中だと思います。  
おそらくその中というのは下記だと思います。

<https://github.com/illuminate/http/blob/master/Request.php#L516>

おそらく同じことですが、laravelリポジトリ内から辿りたいなら下記です。

<https://github.com/laravel/framework/blob/7.x/src/Illuminate/Http/Request.php#L516>

ちなみに参考になさっているページ [ルーティング 5.7
Laravel](https://readouble.com/laravel/5.7/ja/routing.html) 下部には

> Licensed by MIT License. Copyright at Taylor Otwell(Original) and Hirohisa
> kawase(Translation), 2018.  
>  ドキュメントメンテナンス期間は終了しました。

とあります。

同じくメンテナンスが終了しているようですが、

[API認証 5.8 Laravel](https://readouble.com/laravel/5.8/ja/api-
authentication.html) に質問者さんと同じ用法の

[code]

    use Illuminate\Http\Request;
    
    Route::middleware('auth:api')->get('/user', function(Request $request) {
        return $request->user();
    });
    
[/code]

がありました。`use Illuminate\Http\Request;` なので、私が上げたリンクのものが中身だと思います。


CC BY-SA 4.0
2020-08-18T12:23:00.220
69662
2020-08-18T13:33:58.543
2020-08-18T13:33:58.543
9008
9008
69658
answer