背景
プログラミング用語の中でも、何回か聞いても右から左へ素通りしてしまうのが「依存性の注入」などのプログラミング独特のワード。アウトプットすることで覚えたい
目的
依存性の注入と聞いて、すぐにコードの違いを思い浮かべられるようになること
本文
一言で言うと?
依存性の注入とは「依存するクラスを、クラスの内部でインスタンス化せず、外部からインスタンス化したものを受け取るようにすること」。なんかわからないので、使い
前提
classAはclassBに依存しているとします。
(依存とは、上記で言えばclassAはclassBがないと動かない状態のこと、です。)
「依存性の注入」のコード
classAをインスタンス化する前に、classBをインスタンス化し渡している。
これにより、classAのコンストラクタ内ではインスタンス化していない。
# classA インスタンス化
$classB = new classB();
$classA = classA($classB);
# classA コンストラクタ
public function __construct(ClassB $classB){
$this->classB = $classB;
}
「依存性の注入」されてないコード
コンストラクタ内でインスタンス化している。
# classA コンストラクタ
public function __construct(){
$this->classB = new ClassB();
}
学び
- インスタンス化してから渡すか、中でインスタンス化するかの、簡単な違いであることがわかった。
次
laravel上でどのような仕組みになっているか、確認する。