依存性注入とは
依存性注入(Dependency Injection、DI)とは、ソフトウェア設計パターンの一つで、クラスがその依存オブジェクトを自分で生成するのではなく、外部から提供される方法。
実装例
public function __construct(
//コンストラクタの引数
//このクラスが動作するために必要な依存オブジェクト。
//Mainというサービスと、Factoryという工場(ファクトリー)クラスを依存として受け取る。
Main $main_service,
Factory $apply_validate_factory
) {
//依存オブジェクトの代入
//コンストラクタで受け取った依存オブジェクトをクラスのプロパティに代入。
//これにより、クラス内の他メソッドでこれらを使用できる。
$this->main_service = $main_service;
$this->apply_validate_factory = $apply_validate_factory;
}
DIのメリット
柔軟性の向上:異なる実装を容易に差し替えられる。
テストの容易さ: ユニットテストがしやすくなる。
コードの再利用性:同じクラスを異なるコンテキストで再利用することが容易になる。
具体的な使用例
class MyController extends Controller
{
protected $main_service;
protected $apply_validate_factory;
public function __construct(Main $main_service, Factory $apply_validate_factory)
{
$this->main_service = $main_service;
$this->apply_validate_factory = $apply_validate_factory;
}
public function index()
{
// ここで $main_service と $apply_validate_factory を利用
}
}