Pergunta

Hoje no trabalho alguém tentou me convencer de que:

{$obj->getTableInfo()}

é bom para smarty / MVC / templates porque ele está usando um método de objetos. Argumentei que, porque ele faz uma chamada para o banco de dados não tem lugar estar lá e ele deve estar no controlador (que realmente não usar MVC). Estou certo em minha compreensão das separações lógicas que são usadas em MVC e geralmente em templates? Ou há algo que eu estou ausente?

Foi útil?

Solução

Você tem razão. Ele está errado.

chamadas de banco de dados, não importa de que forma, deve viver no controlador se você quer fazer MVC direita.

Obviamente as pessoas mijar todo o que deve ser e fazer coisas assim, mas não é a maneira correta.

Outras dicas

Bem, não há regras "oficiais" ou qualquer coisa, mas acho que algo como isso pertence ao controlador. Eu não faço nada em meu código vista, exceto variáveis ??de exibição, nada mais complexo do que um if ou um loop do tipo foreach é permitido. Certamente não chamar funções que acessam o banco de dados. Que todos devem ser carregados pelo controlador, a visão só deve decidir se ele precisa para exibi-lo ou não.

Depende do seu contexto e alcance realmente.

É de R $ obj o controlador ou a camada de modelo? Que deve responder se é ou não é válida na minha opinião.

Em resposta a ler as outras respostas.

O nome funções em si pertence-lo para ser um método getter simples. Pode fazer uma chamada para o banco de dados através de uma camada de controlador. Que eu diria que é ok. Especialmente se for usada alguma forma de cache na memória. (Ou seja, o getter é o setter como você só quer cache-lo quando ele é usado uma vez.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top