Para quem quer estudar OOP. Padrões etc...
Uma referencia excelente é o livro, traduzido para portugues:
Entendendo e dominando o php - Matt Zandstra

Cada semana tiro alguns minutos para me aprofundar no que o livro tem. é
muita informação.
Vale o investimento.

Abs
Edinho Almeida
11 8018-8019


2009/1/29 Marco Antonio <[email protected]>

> Complementando...
>
> - Programe para interface, não para implementação;
> - Relacionamentos entre classes através da composição, no lugar de herança;
>
> Na boa pessoal, o que se percebe lendo os posts de hoje, é que o problema
> não é no CodeIgniter mas falta de conhecimento de oop e programação em
> geral. E nesse caso não vai ser aqui e nem em nenhum fórum que os problemas
> serão resolvidos. Dá até para quebrar um galho daqui outro dali, mas uma
> hora a casa cai...
> Então não entendam como má-vontade de uns em ajudar, pelo contrário, a
> maior ajuda que pode ser dada nesse caso é: estudem!
> Sugiro também, como o Marcus, que procurem ler mais, principalmente sobre
> padrões de projeto, ou design patterns...
>
> Abs
>
>
> Marco Antonio
>
> *********
> * E-mail: [email protected] - Skype: coyote.pier
> * Pier de Ipanema: http://www.pierdeipanema.com.br/
> * Pier de Ipanema no Orkut:
> http://www.orkut.com.br/Main#Community.aspx?rl=cpp&cmm=2923344
> * CodeIgniter Php Framework: http://www.codeigniter.com.br
>
>
>
> Marcus Cavalcanti escreveu:
>
>> Herança multipla tras serios problemas de organização de código...
>>
>> Existe como vc fazer herança multipla de uma forma muito mais limpa usando
>> interfaces... (http://www.guj.com.br/posts/list/25674.java)
>>
>> E não é o parent que resolve o problema, em herança qulaquer classe filha
>> acessa os métodos da classe pai desde que esses não sejam "private".
>>
>>
>>
>> 2009/1/29 Vinicius Cruz <[email protected] <mailto:[email protected]
>> >>
>>
>>    Bom, resolvi colocar tudo na class MY_Controller mesmo... ¬¬
>>
>>    Herança múltipla faz falta.
>>
>>    Vinicius
>>
>>    2009/1/29 Vinicius Cruz <[email protected]
>>    <mailto:[email protected]>>
>>
>>        Newton,
>>
>>        retornando à discussão, no teu artigo fala assim:
>>
>>        "Pra resolver este problema, podemos criar nossa
>>        especialização na pasta de controllers da aplicação (ao invés
>>        da libraries), e incluir este arquivo nas classes que vamos
>>        estender. "
>>
>>        Assim, o MY_relatorio estaria na pasta controller, extends
>>        Controller. Ok!
>>        Mas como um outro controller iria extender (ou incluir este
>>        arquivo) MY_relatorio?
>>
>>        Um controller não pode extender outro controller, certo? No
>>        caso, seria através de uma instância?
>>
>>        Vinicius
>>
>>        2009/1/29 Vinicius Cruz <[email protected]
>>        <mailto:[email protected]>>
>>
>>            Valeu galera!
>>
>>            Esqueci de nosso amigo parent:: =D
>>
>>            Vinicius
>>
>>            2009/1/29 Rafael V. de Oliveira <[email protected]
>>            <mailto:[email protected]>>
>>
>>
>>                Pq vc não passa os dados via parâmetro?
>>
>>
>>                class MY_Controller extends Controller
>>
>>                {
>>
>>                                function MY_Controller()
>>
>>                                {
>>
>>                                               parent::Controller();
>>
>>                                }
>>
>>
>>                                function trata_var($var)
>>
>>                                {
>>
>>                                               //Aqui eu trato a $var
>>
>>                                }
>>
>>                }
>>
>>
>>                class Exemplo extends MY_Controller
>>
>>                {
>>
>>                                function Exemplo()
>>
>>                                {
>>
>>                                               parent::MY_Controller();
>>
>>                }
>>
>>
>>                function teste()
>>
>>                {
>>
>>                                parent::trata_var('bla_bla');
>>
>>                }
>>
>>                }
>>
>>
>>                *De:* [email protected]
>>                <mailto:[email protected]>
>>                [mailto:[email protected]
>>                <mailto:[email protected]>] *Em nome de
>>                *Vinicius Cruz
>>                *Enviada em:* quinta-feira, 29 de janeiro de 2009
>>                18:20 Rafael
>>                *Para:* CodeIgniter Brasil
>>                *Assunto:* Re: [CodeIgniter] Especialização de controller
>>
>>
>>                Pensei em algo do tipo, mas fiquei com dúvida pra
>>                tentar manter a ordem, digamos assim:
>>
>>
>>                class MY_relatorio extends MY_Controller{
>>
>>                 private $var_filha;
>>
>>
>>                 public function get()...
>>
>>
>>                 public functon set($var)...
>>
>>
>>                }
>>
>>
>>                Class MY_Controller extends Controller{
>>
>>
>>                 public function generico()
>>
>>                 {
>>
>>                   //Como acessar $var_filha?
>>
>>                 }
>>
>>                }
>>
>>
>>                No caso, teria que manter a variavel na classe extendida?
>>
>>
>>                Vinicius
>>
>>
>>                2009/1/29 Edinho Almeida <[email protected]
>>                <mailto:[email protected]>>
>>
>>                Não é isso ?
>>
>>
>>                class MY_Controller extends Controller{
>>
>>                  public $var_da_filha = null;
>>
>>                  function talCoisa(){
>>
>>                    echo $this->var_da_filha;
>>
>>                  }
>>
>>                }
>>
>>
>>                class MY_relatorio extends  MY_Controller{
>>
>>                  function teste(){
>>
>>                    $this->var_da_filha = "Classe my_relatorio";
>>
>>                    $this->talCoisa();
>>
>>                  }
>>
>>                }
>>
>>
>>                Abs
>>                Edinho Almeida
>>                11 8018-8019
>>
>>                2009/1/29 Vinicius Cruz <[email protected]
>>                <mailto:[email protected]>>
>>
>>
>>                Pessoal,
>>
>>
>>                uma vez um artigo no Blog do Newton, falando sobre
>>                especialização de Controller.
>>
>>
>> http://www.newtonwagner.net/code-igniter/especializando-controllers-no-code-igniter/
>>
>>
>>                As imagens usadas no post não está aparecendo. Mas é o
>>                seguinte: baseado nas palavras do post do Newton,
>>                teriamos duas telas, de cadastro e relatorio. O que
>>                ele se propoe é criar duas especializações, cada qual
>>                com a lógica especifica ao negócio.
>>
>>
>>                O que eu entendi, é que seria algo mais ou menos assim:
>>
>>
>>                class MY_relatorio extends Controller{ ...
>>
>>
>>                class MY_cadastro extends Controller{ ...
>>
>>
>>                Correto? Agora, digamos que tenho uma class
>>                MY_Controller tenha funcões em comum a ambas
>>                especializações. Ao invés de dar um extends
>>                Controller, seria um extends MY_Controller.
>>
>>
>>                Meu problema (suspeito que seja mesmo de padrões de
>>                projetos) é que, na class MY_Controller, precise
>>                acessar uma informação da class filha. Deu pra
>>                entender? Digamos que em MY_relatorio tenha uma
>>                informação que precisa ser passada pra o método
>>                function geral_my_controller da class MY_Controller.
>>
>>
>>                Ou não estou conseguindo pensar numa solução, ou isso
>>                tá cheirando a POG. =/
>>
>>
>>                Vinicius
>>
>>
>>
>>                _______________________________________________
>>                Lista mailing list
>>                [email protected] <mailto:[email protected]>
>>
>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>
>>
>>
>>                _______________________________________________
>>                Lista mailing list
>>                [email protected] <mailto:[email protected]>
>>
>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>
>>
>>
>>                _______________________________________________
>>                Lista mailing list
>>                [email protected] <mailto:[email protected]>
>>
>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>
>>
>>
>>
>>
>>    _______________________________________________
>>    Lista mailing list
>>    [email protected] <mailto:[email protected]>
>>    http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>
>>
>>
>>
>> --
>> Marcus Cavalcanti
>> 21 9144-5068
>> www.marcuscavalcanti.net/blog <http://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
>
_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a