質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

Q&A

解決済

2回答

3478閲覧

クラス、インスタンスを行っていないのになぜ$request->titleが使えるのか?

Ms.yy

総合スコア83

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

0グッド

1クリップ

投稿2019/09/07 10:40

編集2019/09/07 12:13

コントローラー内での$request->titleでの疑問です。

オブジェクト指向でアロー演算子を使用する場合、
$instance->プロパティ名
$instance->メソッド名

かと思いますが下記の$request->titleはなぜ、「FolderController.php」内にクラスもインスタンスも行っていないのにいきなり、「$request->」が使えるのでしょうか?

2つ目のコードにある「本来のクラス、インスタンス」と使い方が違うので困惑しております。

###FolderController.php

public function create(Request $request) { // フォルダモデルのインスタンスを作成する $folder = new Folder(); // タイトルに入力値を代入する $folder->title = $request->title; // インスタンスの状態をデータベースに書き込む $folder->save(); return redirect()->route('tasks.index', [ 'id' => $folder->id, ]); }

###本来のクラス、インスタンス

<?php class SampleClass { //プロパティの宣言 public $var = 'This is Sample Class.'; } //インスタンスの生成 $sample = new SampleClass(); echo $sample->var; ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

かと思いますが下記の$request->titleはなぜ、「FolderController.php」内にクラスもインスタンスも行っていないのにいきなり、「$request->」が使えるのでしょうか?

Laravel関係なく
外部でインスタンス化された $request を渡されているだけでは?

<?php class SampleClass { //プロパティの宣言 public $var = 'This is Sample Class.'; } //インスタンスの生成 $sample = new SampleClass(); class SampleController { public function hoge(SampleClass $sample) { // SampleControllerの中でSampleClassをインスタンス化していないのに$sampleが使える! echo $sample->var; } } $sampleController = new SampleController(); $sampleController($sample); ?>

投稿2019/09/07 16:00

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

これこそLaravel最大の特徴なので完全に理解するのは難しい。
最初の内は「create()実行時にタイプヒントRequestを元にLaravelが自動的にインスタンス化してる」とでも覚えれば十分。
ドキュメントでは自動注入の部分。
https://readouble.com/laravel/5.8/ja/container.html

投稿2019/09/07 11:40

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ms.yy

2019/09/07 11:44

まさかの自動でしたか汗 もやもやしますね(^^;)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問