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.net
caso
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