昨日記事を読みました: 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がテストに適していると言います)。
ControllerSymfony Framework Bundle: class extends abstract classも調べましたContainerAwareが、これには全体が$container注入されています! フルスタックフレームワークでの ServiceLocator アプローチ?
推奨事項はありますか?長所短所?