Não existe um papel claro escrito na pedra. Existem ferramentas e práticas.
De uma forma geral , é apenas bom senso. O CI é fabuloso porque nos dá
liberdade para fazermos a aplicação da forma que quisermos. E é mau porque
nos dá liberdade para fazermos a aplicação da forma que quiseres eheheh.

Com o codeigniter não precisas sequer de usar models e views. Pode
simplesmente usar controllers, fazer chamadas directas ao banco de dados e
produzir echos para visualização. No entanto estão lá as outras estruturas
para nos ajudar a vida.

Colocar código nos models é uma boa ideia por muitos motivos. Mas vou dar
apenas um para te por a pensar. Se quiseres reutilizar um código (um
qualquer, validação, redimensionamento de uma imagem, apuramento de dados,
etc) onde é mais simples de colocar para ser utilizado em qualquer lado?

Se for no controlador, terá de usar copy/paste para reproduzir. Enquanto se
estiver num model é apenas fazer load do model e usar o método.

Para mim e cada vez mais para os utilizadores de arquitecturas MVC a regra é
deixar os controladores o mais magro possível e deixar os models engordar à
vontade.

Agora a decisão é sempre tua :)

//Zen




2009/2/5 Eric Saboia (Fortes Informatica) <[email protected]>

> Cara, eu lembro que já foi discutido sim, mas não especificamente sobre o
> MVC, tanto que pra mim (e pelo visto pra maioria aqui) não havia ficado
> claro o papel de cada camada.
>
> ----- Original Message ----- From: "Newton Wagner" <[email protected]>
> To: "CodeIgniter Brasil" <[email protected]>
> Sent: Thursday, February 05, 2009 5:54 PM
>
> Subject: Re: [CodeIgniter] MVC de verdade
>
>
> E é por isso que alguns frameworks criam outra camada além do Model, a
> de Persistência. Aí fica mais bem separado ainda! :).
>
> Realmente essa discussão já foi abordada aqui na lista... quem quiser
> pode procurar no histórico.
>
>
> 2009/2/5 Cleyverson Costa <[email protected]>:
>
>> OK Valeu!
>>
>> 2009/2/5 Eric Saboia (Fortes Informatica) <[email protected]>
>>
>>>
>>> Cleyverson,
>>> se você usa Active Record, teoricamente a mudança entre banco de dados é
>>> transparente. além disso, nada impede que você isole as querys das regas
>>> de
>>> negócio... da uma lida sobre DDD.
>>>
>>> Valeu!
>>>
>>> ----- Original Message -----
>>> From: Cleyverson Costa
>>> To: CodeIgniter Brasil
>>> Sent: Thursday, February 05, 2009 3:32 PM
>>> Subject: Re: [CodeIgniter] MVC de verdade
>>> Mas pensem, se eu colocar a validação dentro do model e quiser trocar o
>>> banco de dados...???
>>>
>>> Isso vai me dar uma grande dor d cabeça...
>>>
>>> Regra de negocio eu chamo de validações, ifs e elses etc que vai dizzer o
>>> que fazer...pra mim nao ta tendo logica isso ficar dentro do model.
>>>
>>> Abraços
>>>
>>> 2009/2/5 Eric Saboia (Fortes Informatica) <[email protected]
>>> >
>>>
>>>>
>>>> Se os "criadores" do CI trabalham de forma errada, porque algum de nós
>>>> faria diferente? Fiquei com a pulga atrás da orelha agora em relação ao
>>>> CI
>>>> :(
>>>>
>>>> ----- Original Message -----
>>>> From: Vinicius Cruz
>>>> To: CodeIgniter Brasil
>>>> Sent: Thursday, February 05, 2009 3:00 PM
>>>> Subject: Re: [CodeIgniter] MVC de verdade
>>>> Acho que aprendi tudo errado ... O_o
>>>> O sistema aqui do trampo tá igual ao Bamboo.
>>>>
>>>> 2009/2/5 Luciano Soares <[email protected]>
>>>>
>>>>>
>>>>> Mais informações
>>>>>
>>>>> http://java.sun.com/blueprints/patterns/MVC-detailed.html
>>>>>
>>>>>
>>>>> Participants & Responsibilities
>>>>>
>>>>> The MVC architecture has its roots in Smalltalk, where it was
>>>>> originally
>>>>> applied to map the traditional input, processing, and output tasks to
>>>>> the
>>>>> graphical user interaction model. However, it is straightforward to map
>>>>> these concepts into the domain of multi-tier enterprise applications.
>>>>>
>>>>> Model - The model represents enterprise data and the business rules
>>>>> that
>>>>> govern access to and updates of this data. Often the model serves as a
>>>>> software approximation to a real-world process, so simple real-world
>>>>> modeling techniques apply when defining the model.
>>>>> View -The view renders the contents of a model. It accesses enterprise
>>>>> data through the model and specifies how that data should be presented.
>>>>> It
>>>>> is the view's responsibility to maintain consistency in its
>>>>> presentation
>>>>> when the model changes. This can be achieved by using a push model,
>>>>> where
>>>>> the view registers itself with the model for change notifications, or a
>>>>> pull
>>>>> model, where the view is responsible for calling the model when it
>>>>> needs to
>>>>> retrieve the most current data.
>>>>> Controller - The controller translates interactions with the view into
>>>>> actions to be performed by the model. In a stand-alone GUI client, user
>>>>> interactions could be button clicks or menu selections, whereas in a
>>>>> Web
>>>>> application, they appear as GET and POST HTTP requests. The actions
>>>>> performed by the model include activating business processes or
>>>>> changing the
>>>>> state of the model. Based on the user interactions and the outcome of
>>>>> the
>>>>> model actions, the controller responds by selecting an appropriate
>>>>> view.
>>>>>
>>>>> 2009/2/5 Luciano Soares <[email protected]>
>>>>>
>>>>>>
>>>>>> Bom nesse link da wikiedia em ingles explica o tradicional modelo MVC
>>>>>> (que é diferente daquele implementado pelo CI devido as restrições de
>>>>>> não
>>>>>> criãção de observers em PHP)
>>>>>>
>>>>>> http://en.wikipedia.org/wiki/Model-view-controller
>>>>>>
>>>>>> As a design pattern
>>>>>>
>>>>>> MVC encompasses more of the architecture of an application than is
>>>>>> typical for a design pattern.[citation needed]
>>>>>>
>>>>>> Model Is the domain-specific representation of the information on
>>>>>> which
>>>>>> the application operates. Domain logic adds meaning to raw data (for
>>>>>> example, calculating whether today is the user's birthday, or the
>>>>>> totals,
>>>>>> taxes, and shipping charges for shopping cart items). Many
>>>>>> applications use
>>>>>> a persistent storage mechanism (such as a database) to store data. MVC
>>>>>> does
>>>>>> not specifically mention the data access layer because it is
>>>>>> understood to
>>>>>> be underneath or encapsulated by the model. View Renders the model
>>>>>> into a
>>>>>> form suitable for interaction, typically a user interface element.
>>>>>> Multiple
>>>>>> views can exist for a single model for different purposes. Controller
>>>>>> Processes and responds to events (typically user actions) and may
>>>>>> indirectly
>>>>>> invoke changes on the model.
>>>>>>
>>>>>> 2009/2/5 Luciano Soares <[email protected]>
>>>>>>
>>>>>>>
>>>>>>> Controladores se preocupam apenas com o fluxo das operações dentro de
>>>>>>> um modelo MVC.
>>>>>>>
>>>>>>> O modelo é onde ficam as regras de negócio.
>>>>>>>
>>>>>>> 2009/2/5 Cairo Noleto <[email protected]>
>>>>>>>
>>>>>>>>
>>>>>>>> No Rails, os métodos de um controller são chamadas de actions, que
>>>>>>>> realmente passam a ação do que se vai fazer, em um crud temos as
>>>>>>>> seguintes
>>>>>>>> ações:
>>>>>>>> Create, Read, Update e Destroy.
>>>>>>>>
>>>>>>>> no rails teríamos os seguintes métodos
>>>>>>>>
>>>>>>>> def index
>>>>>>>> end
>>>>>>>> def new
>>>>>>>> end
>>>>>>>> def edit
>>>>>>>> end
>>>>>>>> def save
>>>>>>>> end
>>>>>>>> def destroy
>>>>>>>> end
>>>>>>>> def show
>>>>>>>> end
>>>>>>>>
>>>>>>>> Isso seria as ações da aplicação.
>>>>>>>>
>>>>>>>> "Um colaborador pode criar uma nova venda" sales/new
>>>>>>>> "Um colaborador pode vizualizar uma venda" sales/1/show
>>>>>>>> "Um colaborador pode editar uma venda" sales/2/edit
>>>>>>>> "Um colaborador pode excluir uma venda" sales/1/destroy
>>>>>>>>
>>>>>>>> Claro que isso é a grosso modo, hoje existe formas melhores de se
>>>>>>>> fazer isso no rails usando o conceito de rest web service. Mas idéia
>>>>>>>> é
>>>>>>>> justamente essa, fazer com que um determinado controle expresse
>>>>>>>> apenas as
>>>>>>>> ações
>>>>>>>>
>>>>>>>> 2009/2/5 Cleyverson Costa <[email protected]>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Eric,
>>>>>>>>>
>>>>>>>>> De tudo o que ja li, o uso correto é da seguinte forma:
>>>>>>>>>
>>>>>>>>> Model >> Aqui tem basicamente as chamadas ao BD. Pense na se
>>>>>>>>> seguinte situação. Opa minha empresa vai mudar de banco de dados,
>>>>>>>>> entao as
>>>>>>>>> consultas SQL deverao ser modificadas. Se vc tiver no model apenas
>>>>>>>>> as
>>>>>>>>> chamadas ao banco, vc modifica apenas esta camada. Vc modifica os
>>>>>>>>> sql e todo
>>>>>>>>> o resto continua funcionando.
>>>>>>>>>
>>>>>>>>> Controller >> Aqui ficam as regras de negocio e validações etc.
>>>>>>>>> Tudo
>>>>>>>>> fica aqui. Esta é sua camada de negocio.
>>>>>>>>>
>>>>>>>>> View >> Aqui fica a apresentação. Muita gente acaba colocando o
>>>>>>>>> utf8_encode/decode na view, mas acho que nao seria uma boa pratica.
>>>>>>>>> Quanto
>>>>>>>>> mais limpo vc puder deixar a view (usando o controller) melhor.
>>>>>>>>>
>>>>>>>>> Depois de muito apanhar esta foi a forma que eu acabei achando como
>>>>>>>>> mais correta. Estou usando esta estrutura no site www.ezmatch.netcaso
>>>>>>>>> queira dar uma olhada.
>>>>>>>>>
>>>>>>>>> Abraços
>>>>>>>>>
>>>>>>>>> 2009/2/5 Eric Saboia (Fortes Informatica)
>>>>>>>>> <[email protected]>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Pessoal, pedi antes de ontem um exemplo de aplicação bem feita em
>>>>>>>>>> CI, me indicaram o http://www.bambooinvoice.org/ . Eu estava
>>>>>>>>>> querendo checar
>>>>>>>>>> o uso do MVC dentro de uma aplicação em CodeIgniter, mas me
>>>>>>>>>> deparei com o
>>>>>>>>>> mesmo "erro" que julgava estar acontecendo aqui na empresa. O
>>>>>>>>>> controller tá
>>>>>>>>>> cheio de regras de negócio, assim como validações e etc. Isso tudo
>>>>>>>>>> não
>>>>>>>>>> deveria estar no Model? Pois até onde sei o modelo representa
>>>>>>>>>> tanto a
>>>>>>>>>> persistência, quanto o negócio, enquanto o Controller é
>>>>>>>>>> responsável
>>>>>>>>>> unicamente pelo fluxo da aplicação.
>>>>>>>>>>
>>>>>>>>>> Opniões?
>>>>>>>>>> Eric Saboia
>>>>>>>>>> Desenvolvimento Web
>>>>>>>>>> Fortes Informática (Fortaleza)
>>>>>>>>>> Fone: (85) 4005-1111
>>>>>>>>>> [email protected]
>>>>>>>>>> www.grupofortes.com.br
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Lista mailing list
>>>>>>>>>> [email protected]
>>>>>>>>>>
>>>>>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Lista mailing list
>>>>>>>>> [email protected]
>>>>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Cairo Noleto
>>>>>>>> =========
>>>>>>>> Cairo'sBlog - http://www.caironoleto.com/
>>>>>>>> Web developer - Add4 Comunicação - http://www.add4.com.br/
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Lista mailing list
>>>>>>>> [email protected]
>>>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Lista mailing list
>>>>> [email protected]
>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>
>>>>>
>>>> ________________________________
>>>>
>>>> _______________________________________________
>>>> Lista mailing list
>>>> [email protected]
>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>
>>>> _______________________________________________
>>>> Lista mailing list
>>>> [email protected]
>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>
>>>>
>>> ________________________________
>>>
>>> _______________________________________________
>>> Lista mailing list
>>> [email protected]
>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>
>>> _______________________________________________
>>> Lista mailing list
>>> [email protected]
>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>
>>>
>>
>> _______________________________________________
>> Lista mailing list
>> [email protected]
>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>
>>
>>
>
>
> --
> Newton Wagner
>
> skype: newtonwagner
> msn/gtalk: [email protected]
>
> http://www.newtonwagner.net/
> - http://www.owshit.com.br/
>
> _______________________________________________
> Lista mailing list
> [email protected]
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
> _______________________________________________
> Lista mailing list
> [email protected]
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a