Ciao volevo sapere se è possibile creare una classe Array per php come negli altri linguaggi OO, cioè che l'istanza in se è un array, ma anche un oggetto.
Qalche idea? grazie!Codice PHP:$a=new Array(array('a','b','c'));
$a[3]='d';
$a->push('e');
Ciao volevo sapere se è possibile creare una classe Array per php come negli altri linguaggi OO, cioè che l'istanza in se è un array, ma anche un oggetto.
Qalche idea? grazie!Codice PHP:$a=new Array(array('a','b','c'));
$a[3]='d';
$a->push('e');
Perchè no?Originariamente inviato da SPiNALeX
Ciao volevo sapere se è possibile creare una classe Array per php come negli altri linguaggi OO, cioè che l'istanza in se è un array, ma anche un oggetto.
Qalche idea? grazie!Codice PHP:$a=new Array(array('a','b','c'));
$a[3]='d';
$a->push('e');
Però ti devi riscrivere tutti i metodi, se vuoi chiamarli come nell'esempio, ne vale la pena?
ciao
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.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?
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:
ciaocodice: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"; }
Quindi anche per te non se ne scappa se non con un metodo o agendo proprio sulla proprietà perchè array non è una classe...
Ok, il problema è che volevo evitarlo per retrocompatibilità, nella versione precedente veniva restituito un array mentre ora un oggetto.
Grazie![]()