laravelを学習していたのですが、シーディングのコマンドで実行されるスクリプト「Database.Seeder.php」ファイル内にて、お聞きしたい箇所があります。
php
1<?php 2 3use Illuminate\Database\Seeder; 4 5class DatabaseSeeder extends Seeder 6{ 7 /** 8 * Seed the application's database. 9 * 10 * @return void 11 */ 12 public function run() 13 { 14 $this->call(PeopleTableSeeder::class); 15 } 16} 17
上記のcallメソッドはSeederクラスにあるメソッドということなのですが、$thisは継承元のクラスとしても扱うことができるのでしょうか?
質問の意味が読み取れません。
「$thisは継承元のクラスとしても扱う」とはどういう意味で使ってますか?
ご指摘ありがとうです。
自分としましては、「$this」は自分の今いる場所(DatabaseSeeder)クラス内のメソッドやプロパティを指すものだと理解しています。しかし、callメソッドは継承元(Seeder)クラスのものであるということは、$thisは継承元(Seeder)内のメソッドやプロパティも指すことができるのか、といった意味で使用しています。
$thisはクラスを指すもので、メソッドやプロパティではないです。
あ、いえ、そこは理解しているのですが、$thisは、継承元のクラスも指すことができるのか、といった意味で質問させて貰いました。
「継承元のクラスを指すことができるのか」できないとも言えるし、できるとも言える。
継承したクラスを指すのであって、継承元のクラスを指すものではない。
継承したクラスは、継承元のクラスの機能を持つことができるのであって、あくまで指すものは継承したクラス。
あ、そうだったんですね。
ということは、「callメソッドがSeederクラスにあるメソッド」ということは、DataBaseSeederクラスが、Seederクラスのメソッドを受け継いでいるから$thisにより、callメソッドを呼び出すことができる、といった意味だったと理解できました。。
extendの意味を調べればわかることだと思いますが。
継承について、全然勉強不足すぎました。。もう一度、復習したいと思います。
まだ、Laravelは早すぎると思うけど。
買った書籍がデータベースの章の終わりらへんまで来たので、取り敢えず一通りやってみたい気持ちが強いんですよね...
これ以上つまづくようだったら、考えたいと思います。
PHPが初心者のままでそれを自身が認識していないから学習が進まない。それだけの話。煽りでもなんでもなく、見た人はみんな感じている事実です。
PHPを基礎からやり直したほうが無用な丸投げ質問をすることなく、同じ指摘も受けることなく、確実に早く進みます。
これまでの質問と回答、コメントをきちんと読み返すと自身の現在地がわかりますよ。
(このままだと何十年かかってもLaravelはおろかPHPすら使いこなせるようになりません)
回答2件
あなたの回答
tips
プレビュー