Zend Framework

Models e DbTable no Zend Framework

Por em

Olá pessoal,

Hoje gostaria de esclarecer um assunto muito polêmico que é: Models e DbTable no Zend Framework.
Muitas pessoas devem se perguntar: qual a diferença entre os Models e DbTables??

Vamos lá, o DbTable tem o único objetivo de trabalhar e persistir os dados da aplicação, já o model possui as regras de negócios, ou seja, o DbTable deve ser instanciado dentro do model e nunca dentro do controller.

Pense no model como o camarada que manipula os dados, independente se tais dados estão em um banco, em um arquivo XML, se eles vem do facebook ou twitter.

Vamos utilizar o twitter como comparativo:
Se você quer apresentar informações do twitter na sua aplicação, você criará certamente um Model, pegará as informações utilizando a classe Zend_Service_Twitter (acho que é isso). Para exibir as informações, você instanciará esse model no controller e então atribuirá as informações de exibição para view. Perceba que toda a regra de tratamento está no Model que simplesmente está consumindo as informações do twitter via a Zend_Service.
O mesmo ocorre com banco de dados, ou seja, quando precisamos consultar ou mesmo realizar qualquer operação, pegamos esses dados através de alguma classe que permita fazer isso, nesse caso a Zend_Db_Table_Abstract, ou melhor dizendo: os nossos DbTables.
Todo o tratamento dos dados, regras de negócio, etc ficam nesse Model que será instanciado no controller ou mesmo dentro de outro model. O grande ponto é: Utilizamos o DbTable para trazer informações para o Model.

É muito comum o pessoal fazer uma certa confusão em relação aos Models e DbTables, por isso, fica a dica.

Abraço a todos.