Vou fazer aqui um exemplo e mando..

2009/2/6 Luciano Soares <[email protected]>

> Marcus vc poderia dar um exemplo usando aquele exemplo das cartas de como
> vc implemente o Service Layer?
>
> Acho que seria de uma grande ajuda pro pessoal e poderia ser
> disponibilizado no site do CI.
>
> Até mais.
>
> 2009/2/6 Marcus Cavalcanti <[email protected]>
>
>> Esse "scan" da revista diz bem o que estou querendo dizer e o inverso que
>> o BambooInvoice faz.
>>
>>
>> 2009/2/6 Marcus Cavalcanti <[email protected]>
>>
>>> Acadei dando um "send" sem querer, mas continuando..
>>>
>>> O cachorro que deve conhecer os seus métodos, se ele deve latir alto ou
>>> baixo (regra d enegócio/validação) é ele quem deve conhecer e não a
>>> aplicação, pois isso diz respeito ao cachorro e não a aplicação então qual
>>> sentido de ter isso no controller?
>>>
>>> Quando você tem duas entidades, por exemplo, um método "enviarCarta" você
>>> está dizendo respeito na verdade a duas entidades: carta e pessoa. Pessoa pq
>>> alguém envia uma carta e nesse caso é uma pessoa, então vocês devem estar se
>>> perguntando: Isso fica em qual das duas classes? A resposta é nenhuma, isso
>>> deveria ficar em outra camada, na qual chamam de "Services Layer" que é
>>> responsável por implementar isso.
>>>
>>> Essas questões divergem, tem várias oponiçoes, o negócio é tentar pensar
>>> nas coisas como objetos. Sinceramente o MVC que o CI implementa não é um MVC
>>> como foi proposto, o pattern mesmo, mas é como o CI implementa.
>>>
>>> Eu nunca tenha regras de negócio no meu controller, ou é no model ou
>>> tenho uma camada a mais, conforme já citei.
>>>
>>> Esse é um bom assunto a ser discutido aqui e a propósito eu acho essa app
>>> BambooInvoice um péssimo exemplo.
>>>
>>> 2009/2/6 Marcus Cavalcanti <[email protected]>
>>>
>>> hahaha adoro essas discussões...
>>>>
>>>> Pensando no MVC, o que o Luciano botou é o certo a ser feito.
>>>>
>>>> Controllers não devem ter regras de negócio da aplicação, controllers
>>>> não conhecem isso, apenas direcionam a aplicação.
>>>>
>>>> Em OO purista e como deveria ser, segundo Domain Driven Design, as
>>>> informações e regras de negócio de uma entidade deveriam dizer respeito a
>>>> ela e não a um controller, lembre-se, aprendemos OO da seguinte forma:
>>>>
>>>> class Cachorro extends Mamifero {
>>>>    public function latir() {
>>>>
>>>> }
>>>>
>>>>
>>>>
>>>> 2009/2/6 Eric Saboia (Fortes Informatica) <
>>>> [email protected]>
>>>>
>>>>  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 <[email protected]>
>>>>> *To:* CodeIgniter Brasil <[email protected]>
>>>>> *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
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Marcus Cavalcanti
>>>> 21 9144-5068
>>>> www.marcuscavalcanti.net/blog
>>>>
>>>
>>>
>>>
>>> --
>>> Marcus Cavalcanti
>>> 21 9144-5068
>>> www.marcuscavalcanti.net/blog
>>>
>>
>>
>>
>> --
>> Marcus Cavalcanti
>> 21 9144-5068
>> www.marcuscavalcanti.net/blog
>>
>> _______________________________________________
>> 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
>
>


-- 
Marcus Cavalcanti
21 9144-5068
www.marcuscavalcanti.net/blog
_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a