+1

Como usar poliformismo no PHP 4.3.3 ?

criado por Olavo Alexandrino em 06/11/2003 7:29am
Nenhuma descrição foi enviada.

Lista de Respostas:

0
13/11/2003 6:22pm
(~20 anos atrás)
primeiro.. eu não sabia o que é polimorfismo há dois minutos atrás
segundo.. o que a curiosidade não faz né? estou mais sábio do que há dois minutos atrás.. fuçando no google atrás de uma resposta para esta faq achei no yahoo grupos

"Só pra esclarecer para quem não sabe o que é polimorfismo, é quando vc tem
numa classe e nessa classe vários métodos com o mesmo nome, sendo
diferenciados apenas pelos parâmetros passados aos métodos."

e só para ajudar o PHP aceita sim polimorfismo como alguns pensam que não!! procurem na documentação do PHP para mais informações!

espero ter ajudado

0
13/11/2003 6:51pm
(~20 anos atrás)
Diogo Gomes respondeu:
Sinceramente não sei bem como utilizar, mas para quem sabe tenho dois caminhos:
www.php.net/language.oop
www.php.net/overload //sobrecarga de propriedades de acesso e metodos de objeto

Pesquisando, li que no PHP, somente funções membro de uma classe ´podem ser polimórficas.

0
13/11/2003 6:53pm
(~20 anos atrás)
perdão pelo duplo post
mas para quem se interessou pelo assunto achei um trecho interessante

o correto é poliformismo ! e não polimorfismo como eu coloquei no post anterior, mas achei um link interessante sobre o assunto.

Geralmente acha-se o assunto relacionado com Herança em classes.

Segue um trecho mais técnico sobre a descrição do poliformismo e orientação a objeto.

e fica a dica Olavo, porque não escreves um artigo sobre o assunto? explicando e exemplificando a partir dos posts que tu receberás desta faq ? seria interessante não ?

"
Orientado ao Objeto

Sob um ponto de vista superficial, a expressão orientado ao objeto. Significa que o produto gerado é organizado como uma coleção de objetos separados que incorporam tanto a estrutura quanto o comportamento dos dados. Isso contrasta com a programação convencional, segundo a qual a estrutura e o comportamento dos dados têm pouca vinculação entre si. Na orientação objeto existem quatro aspectos a identidade, classificação, poliformismo e herança.

Identidade significa que os dados são subdivididos em entidades discretas e distintas, chamadas de objetos. Um objeto pode ser uma norma , um arquivo. Pode-se definir que cada objeto tem com sendo inerente, distintos. Cada um tem sua própria identificação. Classificação significa que os objetos com a mesma estrutura de dados ( atributos ) e o mesmo comportamento ( operações ) são agrupadas em uma classe.

Cada classe descreve um conjunto possivelmente infinito de objetos individuais.

Poliformismo significa que a mesma operação pode atuar de modos diversos em classes diferentes. Uma implementação específica de uma operação por uma determinada classe e chamado de método."

retirado de http://www.google.com.br/search?q=cache:qd4hgU-rEgAJ:geocities.yahoo.com.br/fclino2000/sistema.doc+poliformismo&hl=pt-BR&lr=lang_pt&ie=UTF-8

0
13/11/2003 6:55pm
(~20 anos atrás)
Diogo Gomes respondeu:
Um exemplo do manual que parece que usa polimorfismo:
//Abstract class - should never be instantiated
class FormField {
var $name;
var $value;
var $style;

construction FormField($name, $value, $style = "") {
$this->name = $name;
$this->setValue($value);
$this->setStyle($style);
}

function setValue($value) { $this->value = $value; }
function getValue() { return $this->value; }
function getName() { return $this->name; }
function setStyle($style) { $this->style = $style; }
function getStyle() { return $this->style; }

//Polymorphism - this method is the main polymorphic point
function displayField() { echo "YOU MUST OVERRIDE!!!"; }

function getDisplayStyle() {
if ($this->style=="") {
return "";
} else {
return " style=\"$this->style\"";
}
}

0
11/01/2004 8:29am
(~20 anos atrás)
Olavo Alexandrino respondeu:
O motivo dessa FAQ é que notei no PHP 4.3.3 um BUG, tinah uma classe que tinha 2 metodos com o mesmo nome:

$this->getDateString();

$this->getDateString($date);

a primeira retorna a String completa da data corrente, a segunda mostrava a String da data passada como parâmetro.

Quando utilizei o PHP 4.3.3 ocorreu um mensagem de erro dizendo que eu DUPLIQUEI o método, ou seja, não poderia utilizar 2 métodos com o mesmo nome. Curiosamente em versões anteriores esse erro nao ocorria, por isso perguntei.


0
05/02/2004 1:26pm
(~20 anos atrás)
Gustavo Villa respondeu:
Marcelo é POLIMORFISMO mesmo e não poliformismo.
Mofismo vem de FORMA. Por isso no português por exemplo chama-se análise morfológica...diz respeito a forma.

O Polimorfismo não é suportado pelo PHP 4. Esse tipo de implantação parece ter sido resolvida no PHP 5, mas infelizmente ainda não achei server que suporte PHP 5.

Mas fica o toque.

O Polimorfismo é útil para situações em que você quer que seu código (mais especificamente seus métodos) se comporte de forma diferente caso seja passado um parâmetro.

No PHP 4 podemos usar para tentar driblar esse problema, o seguinte:

function getData($formato=0){

}

0
05/02/2004 1:28pm
(~20 anos atrás)
Gustavo Villa respondeu:
Marcelo é POLIMORFISMO mesmo e não poliformismo.
Mofismo vem de FORMA. Por isso no português por exemplo chama-se análise morfológica...diz respeito a forma.

O Polimorfismo não é suportado pelo PHP 4. Esse tipo de implantação parece ter sido resolvida no PHP 5, mas infelizmente ainda não achei server que suporte PHP 5.

Mas fica o toque.

O Polimorfismo é útil para situações em que você quer que seu código (mais especificamente seus métodos) se comporte de forma diferente caso seja passado um parâmetro.

No PHP 4 podemos usar para tentar driblar esse problema, o seguinte:

function getData($formato=0){
if ($formato==0){
... código ...
} else if (formato==1) {
... código ...
}
... etc ...
}

Entenda que quando atribuímos um valos ao parâmetro $formato, dizemos que CASO não seja definido nenhum valor, o valor padrão a ser utilizado será 0.

Entendeu ou confundi você mais ainda? =/

0
16/07/2004 6:25pm
(~19 anos atrás)
Marcelio Leal respondeu:
Primeiro, hj existe um parâmetro que diz se tu queres que seja mostrado um erro quando tu duplicas um métodos ou não, mas sempre foi ilegal fazer dois métodos com nomes iguais, embora os parametros sejam diferentes.

Polimorfismo é um determinado objeto realizar ações diferentes ou comportamento diferente em situação que aparentemente seriam iguais, mas isso vc pode verificar melhor em uma apostila de OO.

O PHP suporta sobrecarga de métodos, ou seja, vc fazer dois métodos com nomes iguais em classes PAI e FILHO.
Teóricamente o PHP não suporta sobreposição, que é vc fazer isso na mesma classe, porem isso é só teóricamente, na prática você pode fazer isso pq o que o PHP exige é o número mínimo de parâmetros que estão declarados na tua classe, ou seja podes passar mais parametros do que os que estão na tua assinatura, configurando assim a sobreposição.

Uma coisa, nunca leve somente a teoria em consideração, abstraia e tente po-la em prática....

Falous


0
13/10/2004 4:54pm
(~19 anos atrás)
Rogério Bragil respondeu:
Pessoal, acho que vcs estão confundindo polimorfismo com sobrecarga de métodos.

Pelo que eu saiba, polimorfismo é quando você tem várias CLASSES diferentes, onde essas classes possuem métodos com um mesmo nome, mas que fazem coisas diferentes. Por exemplo, pode-se ter 3 classes: Quadrado, Retangulo e Circulo. Essas 3 classes possuem o método desenhar(), que apesar de ter o mesmo nome, trabalham diferentemente. Com o polimorfismo, você pode criar um array de objetos diferentes (Quadrado, Retangulo e Circulo) e fazer um for percorrer este array chamando o método desenhar(), que a linguagem saberá o que fazer. OBS: pelo menos em Java é assim.

Quanto ao PHP, eu nunca ouvi falar que tinha suporte a polimorfismo. Talvez no PHP5 tenha... É preciso ver na documentação... :)

Falow!

bragil

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)