Camada De Serviço (Sevice Layer)

Estou utilizando o Yii FrameworkP, porém em alguns projetos que envolvem processos complexos em alguns casos eu fazia estes processos no "Model", em outros casos eu fazia no "Controller" (o que eu admito ser uma grande besteira, pois o código fica preso aquele controller).

No caso do modelo eu fazia processos como:

  • ao salvar pendencia, cadastrar todas as cobranças, enviar email para o cliente e etc (eu não fazia tudo isso mas estava pensando em fazer)

Tudo bem quando você que fez o código, você sabe que ele vai cadastrar as cobranças juntos e não é necessário cadastrar a cobrança, mas quando outra pessoa vai alterar seu código ela pode esperar que o médodo "Salvar Pendência" apenas salve a pendência e não todas as cobranças.

Nesse final de semana, pensei na possibilidade de unir o MVC (que eu gosto muito) com uma camada de serviço que me é muito necessário, será que isso pode causar algum impacto aos objetivos do "MVC"?

Obs: Eu já pesquiseis outros tópicos, mas gostaria de mais opniões.

Olá Anderson Danilo,

O MVC é apenas um conceito, ele apenas separa as três camadas. Independente da forma que você for fazer isso, se você mantiver as camadas separadas e adicionar mais uma de serviço como você está dizendo, isso não vai afetar em nada o MVC.

O Yii te da total liberdade para adicionar qualquer tipo de camada na aplicação, com tanto que mantenha a separação de todas.

Minha sujestão para qualquer coisa relacionada a camadas, é não economizar na quantidade de metodos e classes no nivel mais baixo da tua aplicação, isso vai te ajudar a montar o fluxo do sistema em camadas diferentes. Pois vai ser mais fácil juntar vários métodos em uma camada de serviço que tem um método chamado $servico->salvarPendenciaComTodasAsCobrancas();

Não sei se fui claro o suficiente.

Espero ter ajudado.

Abração.