昨日記事を読みました: https://igor.io/2012/11/09/scaling-silex.html
そしてもう一つhttp://davedevelopment.co.uk/2012/10/03/Silex-Controllers-As-Services.html
そこで、概念的な疑問が頭に浮かびました。
現在、私は別々のクラスに多くのコントローラーを持っています。上書きcontroller_resolver
してコントローラー クラスのインスタンスを作成し、コントローラー$app
のコンストラクターに挿入します。
私はこのようにルートを定義します$app->get('/hello', 'HelloController::indexAction')
<- 私のコントローラーリゾルバーは作成しますnew HelloController($app);
- これまでのところとても良い. $app
しかし、正直なところ、 ServiceLocator の使用方法のように見える全体を注入するため、DependencyInjection ではなく ServiceLocator パターンになりました。
今、私は疑問に思っています:そのままにしておくべきですか(うまく動作するため)、または「コントローラーをサービスとして」試して、コントローラーが実際に依存しているサービスのみを注入する必要がありますか? 私のSeviceLocatorアプローチがいつか私を襲うのでしょうか? (人々はDIがテストに適していると言います)。
Controller
Symfony Framework Bundle: class extends abstract classも調べましたContainerAware
が、これには全体が$container
注入されています! フルスタックフレームワークでの ServiceLocator アプローチ?
推奨事項はありますか?長所短所?