Originariamente inviato da SPiNALeX
Ho preso come esempio la classe Array perchè è la più simile a quella che dovrei creare per lavoro, ma non riesco a capire come fare l'overloading dei tipi.
L'unica cosa che più si avvicina è il metodo "magico" __toString, ma puoi solo convertire in stringa l'oggetto, infatti se provi a renderlo un array, e lo usi di conseguenza, il compilatore dice "giustamente" che stai utilizzando un oggetto come un'array (ERRORE).
Tu lo sai gianiaz come fare?
Guarda, credo che questo sia un po' fuori dalla mia idea di programmazione a oggetti (nel senso che non sono ancora arrivato a studiarmela bene), comunque teoricamente credo che quello che vuoi fare sia possibile quando il linguaggio rappresenta un tipo di dato come un oggetto.
Per spiegarmi meglio, se il tipo array fosse un oggetto allora potresti estenderlo aggiungendo i metodi che ti servono, ma in realtà in php è l'array non è un oggetto ma un tipo a se stante.
Forse puoi aggirare il problema usando un metodo che lavori direttamente sulla proprietà dell'oggetto, e non sull'oggetto stesso, ma non riesco a vederne un reale utilizzo:
codice:
class Array {
var $array = array();
function Array($array) {
$this->array = $array;
}
function getData() {
return $this->array;
}
}
$arr = new Array(array(1,2,3));
if(in_array(1, $arr->getData())) {
echo "elemento presente nell'array";
}
ciao