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

> Bom, resolvi colocar tudo na class MY_Controller mesmo... ¬¬
> Herança múltipla faz falta.
>
> Vinicius
>
> 2009/1/29 Vinicius Cruz <[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]>
>>
>>> Valeu galera!
>>> Esqueci de nosso amigo parent:: =D
>>>
>>> Vinicius
>>>
>>> 2009/1/29 Rafael V. de Oliveira <[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]] *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]>
>>>>
>>>> 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]>
>>>>
>>>> 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]
>>>> 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
_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a