Pois é... dar dá, até porque se vc estiver rodando ele num servidor PHP5 ele
funciona direitinho com os métodos mágicos.

__construct() __get() __set() e ctc...

Só que a grande dúvida que me ocorre com PHP é até que ponto isso é
vantajoso.
Porque na hora de gravar no DB eu vou ter que ficar retalhando meu objeto
final, buscando partes da classe concreta e outras da super classe.
Me preocupar em montar tudo isso de forma coerente para “entregar” ao DB o
objeto concreto da forma esperada.

 

O quanto este esforço da abstração compensa na NÃO necessidade de escrever
certos métodos ou atributos novamente.


Desculpem a ignorância sobre o tema, mas realmente ainda não encontrei um
exemplo prático de abstração de classe no PHP que convença de que ganhei
performance ou tempo de escrita de código.

(Lá vou eu com as polêmicas de novo, vão me queimar na fogueira depois
dessa).

 

Obrigado a todos que responderam.
Abraços
Ademir

 

De: [email protected]
[mailto:[email protected]] Em nome de Rafael V. de Oliveira
Enviada em: sexta-feira, 15 de outubro de 2010 11:54
Para: CodeIgniter Brasil
Assunto: Re: [CodeIgniter] RES: Duvida sobre abstração de Classe

 

Eu não acho que o CodeIgniter é o melhor para utilizar nestes exemplos, uma
vez que ele está preso no PHP4.

 

Mas a abstração é mais ou menos isso.

 

Tanto a pessoa física quanto a jurídica partilha dados em comum.

Ao herdar as 2 classes de uma super-pai, neste caso a classe Pessoa, eu não
preciso reescrever métodos.

 

Outro exemplo recorrente é do veículo.

 

abstract class Veiculo {

  public function set_rodas( $quantidade )

  {

    $this->rodas = $quantidade;

  }

 

  abstract protected function andar()

  {

    echo 'moving, moooooving';

  }

}

 

class Carro extends Veiculo {

  protected function andar()

  {

    echo 'carro em movimento';

  } 

}

 

$veiculo = new Carro();

$veiculo->set_rodas(4);

$veiculo->andar();

 

 

Mais ou menos isso.

 

Corrigam-me se eu estiver errado, mas isso não dá pra fazer no CodeIgniter.

 

Em 2010/10/15, às 15:39, Ademir C Gabardo escreveu:





Foi a mesma conclusão a que cheguei.
Lembrando que esse é apenas um exemplo didático, uma tentativa de
compreender como poderia ser feita a abstração de classes na estrutura do
CodeIgniter.

Talvez (e muito provavelmente) existam exemplos mais práticos e simples de
aplicar, mas a faculdade deixa a gente meio bitolado as vezes.
Falou em abstração de classe sempre lembra da classe pessoa, exemplo
recorrente.

 

Eu estou tentando compreender melhor esses conceitos de abstração.

Na prática, eu crio uma classe para pessoa física e outra para jurídica.
Não costumo misturar as duas.

 

Galera, opiniões? Críticas? Mais dúvidas? Novas sugestões?

 

Att
Ademir

 

 

De: [email protected]
[mailto:[email protected]] Em nome de Eric Saboia
Enviada em: sexta-feira, 15 de outubro de 2010 11:33
Para: CodeIgniter Brasil
Assunto: Re: [CodeIgniter] Duvida sobre abstração de Classe

 

Pensando bem, apesar de não fazer sentido pra mim fazer tal coisa em um
Controller, a solução seria a mesma pra Models:

abstract class Pessoa extends Model {

}

class PessoaFisica extends Pessoa {

}

Dessa forma, PessoaFisica herdaria todos os metodos de Model, além de herdar
os métodos não abstratos de Pessoa, e seria obrigada a implementar os
métodos abstratos de Pessoa

2010/10/15 Eric Saboia <[email protected]>

Nem entendi seu problema, por isso fica difícil ajudar.

Não entendo pra que você quer estender uma classe abstrata em controllers,
no seu exemplo de Pessoas, não seria isso uma entidade, e portanto seria
feito nos Models?

2010/10/4 Julio Fagundes <[email protected]>

 

Pois é! tipo em cascata.

Nessa caso se a class abstrata herdar ao controller, acho que matou a
charada não?

Sds
Julio Fagundes


Vinicius Cruz escreveu:

Quando diz que não suporta herança múltipla, senão me engano o C suporta,
seria fazer algo assim:

class teste extends teste1, teste3

Portanto, é válida a class abstrata herdar, e a concreta herdar a abstrata.

Att,
Vinicius Cruz
http://twitter.com/vinaocruz
http://www.zime.com.br/




Em 4 de outubro de 2010 17:21, Ademir C Gabardo <[email protected]
<mailto:[email protected]>> escreveu:



   Viajar não viajou, mas o problema é que o PHP Não tem suporte a
   Herança Multipla, então se ele já herda as propriedades do
   Controlle não poderá herdar novamente da classe abstrata, eis o
   dilema.
        Alguma sugestão?
        Att
   Ademir
    
       ----- Original Message -----

       *From:* Vinicius Cruz <mailto:[email protected]>
       *To:* CodeIgniter Brasil <mailto:[email protected]>
       *Sent:* Monday, October 04, 2010 5:11 PM
       *Subject:* Re: [CodeIgniter]Duvida sobre abstração de Classe

       No caso, seria adicionar na class abstrata a herança do
       Controller? Consequentemente, teriamos as classes concretas
       com os métodos herdados da classe abstratas e os métodos do
       controller principal.

       Viajei?!

       Att,
       Vinicius Cruz
       http://twitter.com/vinaocruz
       http://www.zime.com.br/


       Em 4 de outubro de 2010 16:51, Ademir C Gabardo

       <[email protected] <mailto:[email protected]>>


       escreveu:

           Galera, estou escrevendo um artigo que servirá como base
           para um material para novatos em OO + PHP5 sobre abstração
           de classes em PHP e o uso dos Magic Methods do PHP 5.
           Para isso, estou usando como exemplo a abstração da classe
           pessoa.
           Mas aí surgiu uma dúvida cruel.
           Imaginem o modelinho.
                        //Abstrata
           class Pessoa(){
           }
                        //Concreta
           class PessoaFisica extends Pessoa(){
           }
                        //Concreta
           class PessoaJuridica extends Pessoa(){
           }
                        Como vocês fariam isso no CodeIgniter uma vez que os
           controladores já herdam do controller principal?

           Fiquei imaginando um modo de fazer com Interface.
           Alguma dica dos membros da lista?
                        Abraços
           Ademir Gabardo.

           _______________________________________________

           [email protected] <mailto:[email protected]>


           http://www.codeigniter.com.br
 
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

           ---------------------------
           Oportunidade de negócio
           http://www.franquiasargohost.net
           ---------------------------


 
------------------------------------------------------------------------
       _______________________________________________

       [email protected] <mailto:[email protected]>


       http://www.codeigniter.com.br
       http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

       ---------------------------
       Oportunidade de negócio
       http://www.franquiasargohost.net
       ---------------------------


   _______________________________________________

   [email protected] <mailto:[email protected]>


   http://www.codeigniter.com.br
   http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

   ---------------------------
   Oportunidade de negócio
   http://www.franquiasargohost.net
   ---------------------------


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

_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------
 



_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------




-- 
Eric Saboia - eric.saboia.org
PHP Zend Certified Engineer




-- 
Eric Saboia - eric.saboia.org
PHP Zend Certified Engineer

_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------

 

_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------

Responder a