質問: $foo; } ``` Laravelに限った話ではないかもしれませんが、Laravelなりの解決方法があれば知りたいです。 単純にデザインパターンの話であってもかまいません!
回答: これってそもそもDIに関する質問ですか? 抽象的なコードの例なので、一概には言えないですが設計が悪いと思います。 そこまで多くの引数(多分引数4つではなくもっと多くなる懸念をしていると思いますが、経験上5つ程度はよくあります)が必要にはならないはずです。 →依存関係でそこまで多くのものが依存するのは、横に繋がりが多すぎるためな気がします ちなみに配列で渡す系の実装はコードの見通しが悪くなり タイプヒンティングが使えないので悪手です。(サービスロケータでありDIではないです) 多くの箇所で質問のコードへ引数を渡すコードを書かないといけないという懸念であれば、 DIコンテナを使いましょう。 一箇所でクラス定義を管理し、依存関係を解決するものなので、 定義ファイルを作ったりすれば、引数について悩むことはないと思います。 symfonyの実装例 コードの見た目の問題で、単純に一列が長くなるのが嫌という場合 ``` function __construct( \Foo $foo, \Bar $bar, \Hoge $hoge, \Moge $moge ){ $this->foo = $foo; } ```