かなり初歩的なことなのかもしれませんが、コントローラーでよく使われる
public function test(Request $request) { }
この部分のRequest $requestって具体的にどういった意味なんでしょうか。
リクエストが使えるようになるのは知ってるんですが、よくわからないまま使っていたので・・・。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
技術的には、メソッドインジェクションという、依存性注入を利用するための書き方になります。
ざっくり簡単に書きますと、Laravelではコントローラのコンストラクタやメソッドの引数に
処理で使いたいクラスを型と共に書くと、いつの間にか引数に入ってきて、
インスタンス化(newとか)を意識せずにそのまま利用できるという特徴があります。
この機能を使って、Request
クラスを内部で使うようにする書き方をしているわけです。
PHP
1// モデルをメソッドインジェクションする例 2public function index(User $user) 3{ 4 return $user->all(); 5}
で、そのRequest
(Illuminate\Http\Request
)クラスですが、
これまたざっくりと話すと、ユーザーからのリクエストに関する様々な情報を持ち、
それら情報を使いやすくするためのメソッド等を持つクラスです。
様々な情報というのは、例えば以下のようなものです。
- $_GET や $_POST値
- アップロードファイル($_FILES)
- サーバ情報($_SERVER)
- クッキー($_COOKIE)
- などなど
サーバへのリクエストが来た段階で上記の情報をまとめて、内部でRequestを生成しています。
その生成されたクラスを、メソッドインジェクションで呼んできて、
例えばユーザの入力値を得るために$request->all()
とか使っているわけですね。
投稿2016/10/28 05:24
総合スコア452
0
質問の意味が違ってたらすいませんが、
Request $requestの
$requestはその内部データで
Requestは$requestのクラス名です
Requestは以下にあるクラスが使われてます。
vendor/laravel/framework/src/Illuminate/Http/Request.php
$requestにはGETやPOSTやServer情報などが入ってます。
投稿2016/10/28 05:19
編集2016/10/28 05:28総合スコア648
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
この部分のRequest $requestって具体的にどういった意味なんでしょうか。
リクエストとレスポンスのざっくりした概念的な意味を知りたいという質問でしょうか?
とりあえずその前提で、、
リクエスト
文字通り、ユーザーがブラウザなどを使って特定のウェブサイトを表示したいというリクエストの事ですが、
ブラウザはその時、希望するページのURLや、時にはcookieやGET、POSTなどのデータを一緒にサーバーに送ってきます。
フレームワークを使わない場合スーパーグローバル変数を使ってその値とかを取り出したりするのですが、より使いやすくするため、フレームワークはリクエストオブジェクトとしてそのオブジェクトにブラウザから送られたさまざまな情報をセットしてくれます。
という事でブラウザから送られてきた様々な情報を使いやすくまとめてくれた塊みたいな感じと考えれば良いかなと思います。
ついでにレスポンス
逆にレスポンスはリクエストで希望されたページをブラウザに送信するわけですが、その時ブラウザに送り返す内容をレスポンスにセットする事になります、通常あまり何も考えなくてもフレームワークがやってくれて見えづらい部分もありますが、こんな感じでレスポンスの内容をセットできます。
投稿2016/10/28 05:10
編集2016/10/28 05:14総合スコア1689
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
https://readouble.com/laravel/5.3/ja/requests.html
依存注入により、現在のHTTPリクエストインスタンスを取得するには、タイプヒントでIlluminate\Http\Requestクラスをコントローラーメソッドに指定します。現在のリクエストインスタンスが、サービスプロバイダにより、自動的に注入されます。
投稿2016/10/28 04:42
総合スコア168
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/11/01 01:36