Visualizzazione risultati 1 fino 12 di 12

Discussione: fornire variabili a una classe

  1. #1
    Guest

    Predefinito fornire variabili a una classe

    ho la classe:
    Codice PHP:
    class abcde {
    var
    $ciao;

    function
    blabla {
    }

    }
    come posso far si che quando inizializzo la classe $nuovo = new abcde(); assegno alla variabile $ciao interna alla classe un valore?
    qualcosa come

    $nuovo = new abcde(assegna a $ciao il valore "come stai");

    qualcuno sa aiutarmi?
    grazieeee
    ciauz

  2. #2
    Ospite Guest

    Predefinito

    Codice PHP:
    $nuovo = new abcde;
    $nuovo -> ciao = "come stai";

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da probid Visualizza messaggio
    Codice PHP:
    $nuovo = new abcde;
    $nuovo -> ciao = "come stai";
    ma ke scemo nn ci avevo pensato :S
    grazie mille

  4. #4
    Ospite Guest

    Predefinito

    Alternativa per PHP5 (con il metodo costruttore) :
    Codice PHP:
    class abcde {function __construct($ciao){
    $this->ciao = $ciao;
    }}

    $nuovo=new abcde ("come stai");

    Ciao!

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da probid Visualizza messaggio
    Alternativa per PHP5 (con il metodo costruttore) :
    Codice PHP:
    class abcde {function __construct($ciao){
    $this->ciao = $ciao;
    }}

    $nuovo=new abcde ("come stai");

    Ciao!
    mm ok ma in questo modo il valore fornito durante la creazione passa automaticamente a $ciao perche' deciso dal construct.. ma supponendo che volessi passare piu di un valore a piu di una variabile?

  6. #6
    Ospite Guest

    Predefinito

    Primo modo, se hai più variabili da inserire manualmente:

    Codice PHP:
    class abcde {function __construct($ciao){
    $this->ciao = $ciao;
    // aggiungi qui le altre definizioni, vedendo quella sopra
    }}

    $nuovo=new abcde ("come stai");
    Secondo modo, per automatizzare il lavoro, ideato dal sottoscritto, non so se funziona :

    Codice PHP:
    class abcde {function __construct($variabili){
    foreach(
    explode(",",$variabili) as $variabile){
    $p=explode("=>",$variabile);
    $value=$p[1];
    $variabile=$p[0];
    $this->$variabile = $value;}}}
    $nuovo=new abcde ("ciao=>stobene,dove=>la");
    EDIT: Funziona,testato! :D
    Praticamente devi usare la formula nomevariabile=>valore
    se tu dalla classe sopra stampi $nuovo->ciao, ti mostrerà stobene :)

  7. #7
    Guest

    Predefinito

    ma dove ti vengono ste idee??? ;D
    thanks

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,292

    Predefinito

    beh, anche passare un array non sarebbe così male:
    Codice PHP:
    class abcde {
    var
    $dati;
    function
    abcde($parametri)
    {
    $this->dati = $parametri;
    }
    }

    $z = new abcde( array( 'a' => 'zum', 'b' => 'blam' ) );

  9. #9
    Ospite Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    beh, anche passare un array non sarebbe così male:
    Codice PHP:
    class abcde {
    var
    $dati;
    function
    abcde($parametri)
    {
    $this->dati = $parametri;
    }
    }

    $z = new abcde( array( 'a' => 'zum', 'b' => 'blam' ) );
    Non ho capito...che senso avrebbe il tuo script? :D
    Per avere un senso dovrebbe essere così:

    Codice PHP:
    class abcde {function __construct($var){
    foreach(
    $var as $v=>$val){
    $this->$var = $val;
    }
    }}
    $z = new abcde( array( 'a' => 'zum', 'b' => 'blam' ) );
    Oppure...non ho capito bene io cosa intendevi? :S
    Fammi sapere,ciao!

    ma dove ti vengono ste idee??? ;D

  10. #10
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,292

    Predefinito

    no no, hai capito bene. Per quanto riguarda il costruttore, function abcde() è il costruttore. Solo l'ho scritto in un altro modo

    Per quanto riguarda l'array, credo sia più sicuro. Metti che la tua classe ha dei campi interni che non andrebbero toccati, e tu per sbaglio passi uno di questi come parametro, e lo sovrascrivi? E se passi uno dei campi riservati, e blocchi tutto?

    E adesso non ho provato, ma se una classe ha un metodo cippa() e tu fai $this->cippa = 'qualcosa';, temo succeda qualcosa di molto, molto brutto

    Io cmq scrivo nella logica che altri potranno toccare il mio codice, senza conoscerne il funzionamento interno, quindi cerco di farlo a prova di scem... ehm, utente!
    Ultima modifica di dreadnaut : 07-08-2007 alle ore 00.17.11

  11. #11
    Ospite Guest

    Predefinito

    Io intendevo dire semplicemente... l'array
    array( 'a' => 'zum', 'b' => 'blam' )
    nel tuo script a cosa serve?
    Cioè...non è utilizzato da nessuna funzione....

    Perdonami,ma non so proprio come spiegarmi

  12. #12
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,292

    Predefinito

    uhm ?

    l'array viene passato come parametro al costruttore e il costruttore lo copia in $this->dati.
    La funzione abcde() è il costruttore della classe abcde (la sintassi così è php4 comunque!).
    Ultima modifica di dreadnaut : 07-08-2007 alle ore 00.25.01

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •