Newsgroup: it.comp.www.php
Titolo: Polimorfismo e Overloading

Salve a tutti, volevo una conferma ... nel php nn esiste polimorfismo e/o
overloading vero ?
Grazie mille a tutti ...
                                        Bruce

 overloading vero ?
si, si
Ciao Gianfranzo
-- 
ICQ#: 21258924
Nick Gianfranzo
Home page 
http://www.gianfranzo.it
Gianfranzo è contro la guerra

 si, si
intendevo dire si esiste il polimorfismo e si esiste l'oveloading


 overloading vero ?
Per quanto ne so io, se per overloading/polimorfismo intendi il definire
funzioni diverse solo in funzione del numero di argomenti
passati ad una funzione questo NON esiste.
La prova:
function stampa($cognome,$nome){
        echo("Cognome: $cognome Nome: $nome <br>\n");
}
function stampa($cognome){
        echo("Cognome: $cognome <br>\m");
}
stampa("Rossi","Paolo");
stampa("Paolo");
Fatal error: Cannot redeclare stampa() in /services/admin/polimorfismo.php
on line 9

 stampa("Paolo");
già, questo non si può fare, ma essendo un linguaggio che si può 
programmare ad oggetti, è previsto, in questa modalità.
Overloading e polimorfismo sono concetti leggermente diversi, uno 
riguarda la possibilità come giustamente hai detto di definire una 
funzione che possa avere più o meno  argomenti, l'altro la tipizzazione 
delle strutture dati e delle funzioni.
nello specifico puoi trovare qui:
http://it3.php.net/overload
la spiegazione di come ottenere l'overload
e qui
http://it3.php.net/oop
info sul polimorfismo


 programmare ad oggetti, è previsto, in questa modalità.
L'esigenza di polimorfismo/overload è normalmente di chi programma ad
oggetti e che desidera, senza cambiare di nome alle funzioni, avere concetti
medesimi in funzione dei parametri passati senza doverci pensare troppo. In
questo caso non è previsto polimorfismo e overloading nemmeno nella
programmazione ad oggetti, questo fino alla versione 5 del php.
Finchè overload() è sperimentale e parziale non la considero una
funzionalità facente parte della natura intrinseca del linguaggio.
Il vantaggio dell'overload, strutturato in questo modo, è allora molto
'finto' e poco pratico.
Nel mio lavoro quotidiano, ho risolto il problema imponendomi almeno il
numero di variabili dicendo:
stampa($cognome,$nome) poichè questa è l'unica limitazione che il php
impone. Certo mi si potrebbe dire che potevo passare alla funzione un array
e poi studiarne con un case(count( il numero di variabili... ma allora mi
prendo C e torno a quello per fare i CGI :-)
Un overloading polimorfico manuale insomma :-)
Alla lungua, seppure senza gli effettivi benefici dell'overloading
intrinseco, si ottiene lo stesso scopo valutando un pochino i dati nelle var
ricevute. Concettualizzare un'operazione senza dover ripensare ogni volta a
cosa devi e cosa non devi passare come argomenti alla funzione.
Soprattutto che la difficoltà di una mancanza di specifica tipizzazione
delle variabili in php (che dall'altro lato ci semplifica molte operazioni)
ci rende difficile distinguere in modo effettivo l'overload dal
polimorfismo.
Morale, evviva php5 :-)
Jul

 polimorfismo.
resta che sono concetti distinti, in alcuni linguaggi esiste l'uno e non 
l'altro...
sono d'accordo, su tutta la linea :)
in più nella maggior parte dei casi (pagine web di presentazione dati) è 
più comodo l'uso funzionale del linguaggio, visto che di linguaggi ad 
oggetti nati e cresciuti tali ce ne sono di più effi-caci/cienti dal 
punto di vista progettuale/implementativo.
Resta sempre però comodo potersi definire una classe e i suoi metodi 
anche in PHP
