概要
Ray.DiはPHPのための依存性注入(DI)フレームワークです。オブジェクトの依存関係を自動的に解決し、コンテキストに応じた柔軟なオブジェクトグラフの構築を可能にします。
核となる特徴
コンパイルタイムでの依存解決
- 個別のオブジェクトの組み立て方でなく、全体のルールを記述することで依存性を解決(オートワイアリング)
- 実行前に依存性の問題を検出
- コード生成による実行時の最小のオーバーヘッド
柔軟なオブジェクトグラフの構築
- 独立したモジュールの組み合わせによる様々なコンテキストの実現
- 注入対象オブジェクトに応じた依存性解決が可能。たとえば対象のメソッドのアトリビュートやオブジェクトの状態に応じた依存性変更
- 識別子による同一インターフェースの異なる注入
- 遅延生成オブジェクトの注入
依存性の明示的な記述
- 生のPHPコードによる依存生成の記述
- アトリビュートを活用した自己文書化された依存定義
- AOPとの統合による横断的関心事の分離
安定性と信頼性
Ray.Diは2015年に2.0がリリースされて以来、PHPの進化とともに機能を拡張しながらもセマンティックバージョニングに従い後方互換性を確保しています。
Google GuiceとRay.Di
Ray.DiはGoogle GuiceにインスパイアされたPHPのDIフレームワークです。Google Guiceの実績あるAPI設計をベースに、PHPらしい進化を目指しています。このサイトのほとんどのドキュメントもGoogle Guiceから引用しています。
依存性注入を使用することで多くの利点がありますが、手動で行うと大量のボイラープレートコードを書く必要があります。Ray.Diは、そのような煩雑なコードを書くことなく依存性注入を利用できるフレームワークです。詳細はモチベーションのページをご覧ください。
簡単に言うと、Ray.DiはファクトリーやPHPコードでのnew
の使用を不要にするものです。ファクトリーを書く必要がある場合もありますが、コードが直接ファクトリーに依存することはありません。あなたのコードは、変更、ユニットテスト、他の文脈での再利用がより簡単になります。