エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【Laravel】サービスプロバイダーのファイル名パターン【472日目】

サービスプロバイダーのファイル名迷う

インターフェースの実装のためにbindとか、サービスプロバイダーでいろいろやることはあると思いますが、
全部AppServiceProviderのみにするかとか迷いますよね。

で、PHPユーザー会の方に質問したら、わかりやすい説明いただきました。

3パターンに分ける

1. bindの設定数が少ない場合
AppServiceProviderのみ

2. bindの設定数は少ないが処理の重さが気になる場合
→ 利用頻度が高いものと低いものに分ける
多くのAPIで利用されるもの → AppServiceProvider
特定のAPIでしか利用しないもの → DeferredAppServiceProvider (プロパティの$deferred=true)

3. 規模が大きいので整理したい場合
→ パッケージやドメインごとに切る
特定のAPIでしか利用しないようなパッケージのServiceProviderは$deferred=trueにする
-XXXServiceProvider
-YYYServiceProvider
-AppServiceProvider(パッケージに分類できなかったものなど

別な方からも別パターンをもらいました。

用途で分ける

処理での、用途を分けることで、迷わなくする。

例えば、RepositoryInterfaceをbindするときは、 RepositoryServiceProviderというファイル名。

これで、どのファイルに書くか迷いませんね。

最後に

質問に答えてくださった方、ありがとうございました・・・!

かなり迷っていたので助かりました。

今は2.を実装しましたが、今後整理されていくと、用途に応じてファイル名が変わりそうです。

このおかげで次回から迷わずに済みそうです、ありがとうございました!