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

Responder a