Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    209

    [PHP5] Creare la classe Array

    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.

    Codice PHP:
    $a=new Array(array('a','b','c'));
    $a[3]='d';
    $a->push('e'); 
    Qalche idea? grazie!

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    Re: [PHP5] Creare la classe Array

    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.

    Codice PHP:
    $a=new Array(array('a','b','c'));
    $a[3]='d';
    $a->push('e'); 
    Qalche idea? grazie!
    Perchè no?

    Però ti devi riscrivere tutti i metodi, se vuoi chiamarli come nell'esempio, ne vale la pena?

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    209
    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?

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    209
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.