[supersaibal]
Originariamente inviato da }gu|do[z]{®©
In generale il polimorfismo è una caratteristica della programmazion ad oggetti che permette di avere funzioni con lo stesso nome ma che sono di fatto diverse.. perchè hanno parametri di tipo o di numero diverso...
Allora il polimorfismo non va confuso con l'overloading o con l'ovverriding...errore comune per chi si avvicina alla programmazione ad oggetti.
Il polimorfismo significa avere una classe derivata avente
una funzione UGUALE (come nome e come numero/tipo di parametri) a quella della classe base
esempio:
codice:
class FiguraGeometrica
{
public:
virtual float Area();
}
class Cerchio : public FiguraGeometrica
{
float Area()
{
return(3.14 * raggio*raggio);
}
float raggio;
}
class Quadrato : public Figurageometrica
{
void Area()
{
return(lato*lato);
}
float lato;
}
In questo modo quando ho un oggetto FiguraGeometrica posso richiamare Area() ed essere sicuro che venga eseguita la funzione 'giusta' senza preoccuparmi se è un quadrato o un cerchio. Il trucco sta nel fatto che per ogni oggetto viene riservata un'area di memoria in cui sono memorizzati i puntatori alle funzioni 'giuste' (virtual function pointer table). Così tutti gli oggetti 'cerchio' hanno un ptr che punta alla formuletta del pigreco...ma noi non vediamo i detagli e scriviamo area = figura.Area()
Questo è il polimorfismo.
In php in realtà tutte le funziono sono in un certo senso polimorfe... perchè possiamo definire funzioni che abbiano parametri opzionali.. a cui probabilmente, nel codice sorgente del php, corrispondono oggetti polimorfi (overloading dei parametri)
Non solo non è supportato il polimorfismo ma neppure l'overloading!!!
In verità il PHP mi pare lontano anni luce dalla 'pulizia' di un codice C++ o anche solo Java. Anche se il PHP 5 mi pare un pò meglio...con tutto il rispetto per il piaccapi mi pare un somaro che vuo fare il cavallo
si consiglia la lettura di qualsiasi manuuale di OOP [anche non specifico di php]

[/supersaibal]
Infatti...
Se C3p8 può chiedere a quando il polimorfismo...io chiedo...a quando la metaprogrammazione?
Ce ne vuole...ce ne vuole...