Concordo, 
Só complementando, regras genéricas como "validação, redimensionamento de uma 
imagem, apuramento de dados e etc" devem sim ser utilizadas no Model, porém, se 
não tem ligação direta com o domínio do model em questão, podem ficar separadas 
em um helper ou library.

Não faz muito sentido você dar load em um Model diferente do domínio atual, só 
pra aproveitar algum método, melhor é deixar essas regras encapsuladas e chamar 
diretamente dentro de cada Model necessário.

Mas isso já diz mais respeito a DDD do que ao MVC em si (eu acho), e é claro, 
como tudo que estudamos, é sempre uma sugestão de boa conduta de 
desenvolvimento, não estou dizendo que é uma regra ;)
  ----- Original Message ----- 
  From: Ricardo Valfreixo 
  To: CodeIgniter Brasil 
  Sent: Friday, February 06, 2009 5:57 AM
  Subject: Re: [CodeIgniter] MVC de verdade



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





------------------------------------------------------------------------------


  _______________________________________________
  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