- Webエンジニア
- アウトバウンド営業
- Webエンジニア(経験者)
- 他17件の職種
- 開発
- ビジネス
※弊社のエンジニア記事になります。
概要
Laravelの Route::get()
が受け取る第2引数actionがどんな仕組みで動いているのか、ソースコードから探っていきます。
ゴール
Route::get()
へ渡す第2引数actionが何を指しており、どんな仕組みで動作するのか理解することを目指します。
環境
- PHP8.1
- Laravel10.0
TL;DR
配列形式・文字列形式いずれも最終的には、 Controller@Method
の形式の文字列となる。
LaravelのRouteオブジェクトは、文字列に含まれる @
を境界にコントローラクラスのインスタンスを組み立て、メソッド名から具体的なメソッドを呼び出す。
用語
- action:
Route::get()
の第2引数。文字列Controller@method
や配列['Controler', 'method']
のような形式がある
背景
Laravelでパスと対応するコントローラを紐づけるとき、以下のように書くことが多いでしょう。
// 配列
Route::get('/user', [UserController::class, 'index']);
// コントローラ名@メソッド名の文字列
Route::get('/user', 'UserController@index');
ここで、第2引数( [UserController::class, 'index']
, UserController@index
)に注目してみます。
ドキュメントや書籍では当たり前のように書かれていますが、公式ドキュメントでも書式を定義しているところは見当たりませんでした。
APIドキュメントでも型にのみ言及しています。
> get(string $uri, array|string|callable $action = null)
用例からなんとなく使い方は分かりますが、それでは中々頭に残りません。暗記するのではなく、仕組みを理解して使いこないしたいところです。
そこで、ドキュメントに書かれていないならソースコードを覗くしかないじゃない、ということで Route::get()
の第2引数actionがどのように参照されているのか探ってみます。
更に、actionをもとにコントローラのメソッドがどのように呼び出されるのか流れも見ておきたいです。
仕組みと処理の流れが掴めれば、ルーティングに関する設定を書くときも自信をもって臨めるようになるはずです。
※ 今回はコントローラのメソッドが呼び出される仕組みをたどりたいので、Callableをactionとして渡すケースは対象外とします。
私的前置き
色々書きましたが実際はLaravelのソースコードも読んでみたいな〜と思っていたので、好奇心が理由の大半だったりします(:
記事の続きは以下URLからご覧ください。
https://rightcode.co.jp/blog/information-technology/laravel-routeget-action
【2024年卒】新卒採用エントリー開始しました!
特設ページはこちら:https://rightcode.co.jp/recruit/entry-2024
インターン募集!未経験ok、チャレンジ精神ある方求む
ゲームプランナー:https://rightcode.co.jp/recruit/intern-game-planner
メディア運営:https://rightcode.co.jp/recruit/intern-media
社長と一杯飲みながらお話しませんか?(転職者向け)
特設ページはこちら: https://rightcode.co.jp/gohan-sake-president-talk
もっとワクワクする仕事をしたいあなたへ
現在、ライトコードでは「WEBエンジニア」「スマホアプリエンジニア」「ゲームエンジニア」、「デザイナー」「WEBディレクター」「エンジニアリングマネージャー」「営業」などを積極採用中です!
有名WEBサービスやアプリの受託開発などの企画、開発案件が目白押しの状況です。
- もっと大きなことに挑戦したい!
- エンジニアとしてもっと成長したい!
- モダンな技術に触れたい!
現状に満足していない方は、まずは、エンジニアとしても第一線を走り続ける弊社代表と気軽にお話してみませんか?
ネット上では、ちょっとユルそうな会社に感じると思いますが(笑)、
実は技術力に定評があり、沢山の実績を残している会社ということをお伝えしたいと思っております。
- ライトコードの魅力を知っていただきたい!
- 社風や文化なども知っていただきたい!
- 技術に対して熱意のある方に入社していただきたい!
一度、【Wantedly内の弊社ページ】や【コーポレートサイト】をのぞいてみてください。
【コーポレートサイト】https://rightcode.co.jp/
【採用募集】https://rightcode.co.jp/recruit(こちらからの応募がスムーズ)
【wantedlyぺージ】https://www.wantedly.com/companies/rightcode