DI(依存注入、Dependency Injection)でのロボットの足問題の解決方法としてDIに名前空間を導入してみました。 参考:「Diコンテナの名前空間に関するメモ」
ロボットの足問題については、こちらの英語ページあるいはkoriymさんのRay.DIのIssue#36に詳しくあります。
GuiceやRay.DIを理解できたとは言える段階にないので、他の技術での対応方法について比較できないのですが、DIに名前空間を導入することで、かなりエレガントに解決できると思っています。
| $errMsg = getErrors( $errors ); | |
| function getErrors( $errors ) | |
| { | |
| return function( $name ) use( $errors ) { | |
| return $errors->first( $name, '<p class="text-danger">:message</p>' ); | |
| }; | |
| } | |
| //... | |
| {{ $errMsg('name') }} |
| class Post extends Eloquent { | |
| public comments() { | |
| return $this->hasMany('Comment'); | |
| } | |
| } | |
| class Comment extends Eloquent { | |
| public posts() { | |
| return $this->BelongsTo('Post'); | |
| } | |
| } |
| $entity1 = new Model(); | |
| $entity2 = Model::create( array() ); |
DI(依存注入、Dependency Injection)でのロボットの足問題の解決方法としてDIに名前空間を導入してみました。 参考:「Diコンテナの名前空間に関するメモ」
ロボットの足問題については、こちらの英語ページあるいはkoriymさんのRay.DIのIssue#36に詳しくあります。
GuiceやRay.DIを理解できたとは言える段階にないので、他の技術での対応方法について比較できないのですが、DIに名前空間を導入することで、かなりエレガントに解決できると思っています。
自作Diコンテナに「名前空間」を実装してみた。 欲しいと思った理由をまとめてみました。
WScore/DiContainer : https://github.com/asaokamei/WScore.DiContainer
自動設定の問題点
| <?php | |
| namespace wsModule\Alt\Web; | |
| /** | |
| * Interaction for web input and output, such as forms. | |
| * This is a DCI inspired module. things works as coded but still quite experimental. | |
| * | |
| * TODO: remove $this->view property. Interaction should not know about view... | |
| */ | |
| class Interaction |