Comprendo in che modo i preamplificatori di servizio in Laravel funzionano e come usarli. Ma non sono sicuro di come mantenere il codice pulito, in particolare nel conteggio dei parametri del metodo. Ad esempio, ho questo percorso:
Route::post('/user/user-rooms', '\Modules\Administration\User\Services\UserRooms@rooms')
Dove classe assomiglia a questo:
public function rooms(Request $request, UserRulesInRoomsRepository $userRulesInRoomsRepository, RoomRepository $roomRepository)
{
$user_rooms = $userRulesInRoomsRepository->findBy();
$available_rooms = $this->availableRooms($userRulesInRoomsRepository, $roomRepository);
}
private function availableRooms(UserRulesInRoomsRepository $userRulesInRoomsRepository, RoomRepository $roomRepository)
{
$userRules = $userRulesInRoomsRepository->getFilter();
$rooms = $roomRepository->all();
}
Sto utilizzando il repository RoomRepository
solo nel metodo availableRooms
ma ho bisogno di questo repository già nel metodo rooms
perché voglio mantenere l'iniezione della dipendenza.
Potrei usare resolver App::make(RoomRepository ::class)
invece parametro in availableRooms
metodo, ma penso che sia contro il pattern DI.
Un'altra opzione sarebbe salvare questo repository sulla proprietà della classe e poi richiamarlo dal metodo, ma penso che ci sia ancora un problema che ho questo parametro in rooms
metodo, anche se sto usando questo repository solo in un altro metodo.
Spero di averlo scritto chiaramente. Qual è la migliore pratica in questo caso?