環境
Laravel5.8
何をしていたか
▼このようなclassを使用したい
class Hoge { public function __construct($first, $second) { $this->first = $first ; $this->second = $second; }
→引数なしでインスタンス化すると、引数足りないよのエラー
しかし下記の様にresolve()を使用するとインスタンス化できる(もしくはインスタンス化している訳ではない??)
$hoge= resolve(Hoge::class);
疑問点
・なぜresolveを使用するとconstructでの引数を指定しなくてもinstance化できるのか?
Laravel documentを参考にしましたが、「指定されたクラスやインターフェイスの名前から、そのインスタンス自身を依存解決します」の説明でいまいち何がどうなっているのかが不明なのでこちらで質問させていただきました。
よろしくお願いいたします。
「依存解決」がキーワードではあるのですけど、「そういう仕様である」と飲み込むか、コアソースを追っていくのかどちらかになります。
コアソースを読んだら私は一応挙動理解できました。
自身で読んでいくか他人である私の勝手解釈のどちらが良いですか?
前者の方が自身のためにもなるとは思いますが